IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 冒泡排序(升序) -> 正文阅读

[数据结构与算法]冒泡排序(升序)

回想起来大学第一学期学的C语言中的冒泡排序,依然没有忘记那一年期末考试面对冒泡排序因为没有真正理解而导致的手足无措。今天我就想再按自己现在的想法理解写一遍冒泡排序。

原理

(从小到大)相邻的两个数进行比较,如果前一个数大于后一个数,即进行交换。这样进行直至数据从小到大排列。

过程分析?

?例:输入六个 30,24,150,-7,56,98

第一轮排序

?六个数进行5次比较

?1 比较:30>24,30与24交换位置,变换为 2?

?2 比较:30<150,30与150不交换位置,变换为3

?3 比较:150>-7,150与-7交换位置,变换为4

?4 比较:150>56,150与56交换位置,变换为5

?5 比较:150>98,150与98交换位置,变换为6

得到 6 最终结果:最大数150位于最后

第二轮排序

五个数进行4次比较

?1 比较:24<30,30与24不交换位置,变换为 2?

?2 比较:30>-7,30与-7交换位置,变换为3

?3 比较:30<56,30与56不交换位置,变换为4

?4 比较:56<98,98与56不交换位置,变换为5

得到 5 最终结果:第二个最大数98

?经过第三轮排序得到第三个最大数56,第四轮排序得到第四个最大数30,第五次排序得到第五个最大数24。即得到最后排序-7,24,30,56,98,150。

结论

由以上例子,n个数进行n-1轮排序。第一轮排序进行n-1次比较,第二轮排序进行4次比较,第三轮进行3次比较,第j轮排序进行n-j次比较。?

代码?

#include <stdio.h> 
void bubble_sort(int a[], int n)   //数组a里有n个数
{
	int i, j, temp;    //定义三个整型变量 
	//嵌套循环,核心算法
	for (j = 0; j < n - 1; j++)    //进行n-1轮排序
	{
		for (i = 0; i < n - 1 - j; i++)//每轮比较n-1-j次
		{
			if (a[i] > a[i + 1])  
			{
				temp = a[i];      //a[i]与a[i+1] 交换
				a[i] = a[i + 1];    //交换原理c=a;a=b;b=c 
				a[i + 1] = temp;
			}
		}
	}
}

int main()      
{
	int i,n;
	int a[250];
	printf("输入的数据有多少个:");
	scanf_s("%d",&n);
	for (i = 0; i < n; i++)
		scanf_s("%d",&a[i]);
	bubble_sort(a, n);   //函数调用
	for (i = 0; i < n; i++)    //
		printf("%d ", a[i]);                                
	return 0;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:26:26  更:2021-09-26 10:27:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:20:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码