C语言经典练习题(2)——“冒泡排序(Bubble Sort)“
C语言趣味练习题——冒泡排序
文章目录
- C语言趣味练习题——冒泡排序
- 一、冒泡排序介绍
- 二、图文解释原理
- 三、代码实现
- 1.代码示例
- 2. 代码解析
- 总结
一、冒泡排序介绍
冒泡排序(Bubble Sort),也称为沉降排序,之所以称其为冒泡排序是因为算法中会把相对较小(大)的数据像水中的气泡一样逐渐上升到数组的顶端。同时,较大(小)的数据也会一步步沉到数组的底端,这个处理过程需要在整个数组范围内反复执行多遍。每一遍执行时,比较相邻的两个元素,并判断是否交换位置。
二、图文解释原理
纯手工制图哦!
三、代码实现
1.代码示例
// 冒泡排序bubble sort
void Bubble_sort(int a[], int sz)
{int i = 0, j = 0;for ( i = 0; i < sz - 1; i++)// 外层循环 sz-1 次{for (j = 0; j < sz - 1- i; j++) // 内层循环{if (a[j] > a[j + 1]){int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}
}// 打印数组函数
void print(int arr[],int sz)
{int i = 0;for ( i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");
}int main()
{int i = 0;int arr[10] = { 2,1,8,6,9,7,3,5,4,0 };int sz = sizeof(arr) / sizeof(arr[0]);printf("请输入数据:\n");for ( i = 0; i < sz; i++){scanf("%d", arr + i);}//print(arr, sz); // 打印一遍排序前数组数据Bubble_sort(arr, sz);print(arr, sz);return 0;
}
2. 代码解析
代码解析:对数组中的 sz(sz为数组元素个数) 个数执行 sz -1 遍依次操作,在对每一个的外层循环时,对数组中未排序好的元素进行如下操作:两两相邻的元素进行比较,若下标为 j 的元素大于下标为 j + 1 的元素时,则交换其位置,每完成一次判断并交换才算作一次冒泡排序完成,因此经过 sz - 1 遍操作后就可以将全部数从小到大排好顺序了。
解释:内层循环 j < sz - i - 1:因为数组中一共是sz个元素 j 是从0开始,第一次需要作9次比较才能将最大的数字交换到最后,那么数组下标就是 0~ 8 然后与 下标为0(+1)~8(+1)比大小,所以当 arr[j] 为 sz - 1 - 1 == 8的时候 就已经比完了,以此类推第二轮sz - 2 - 1…
总结
冒泡排序总的来说,易于理解,代码实现简易不复杂,但是唯一不足的是运行效率较低,因为在每一次交换中,一个元素只能一个个的向后先做判断后交换,如果在一个数组元素较大的数组中,无疑是一个缺点!所以小伙伴们还能不能想出更优解的方法呢?希望与大家共同进步! 经典排序算法 - 冒泡排序Bubble sort 其原理是比较接近的数字22,按照从小到交换大或降序排列, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头開始进行两两比較交换,直到倒 ... Java中的经典算法之冒泡排序(Bubble Sort) 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2 ... 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将 ... 冒泡排序 ( Bubble Sort ) 冒泡排序,正如它的名字一样,未排序数组中的最大(小)值会依次往上浮.冒泡排序主要有两个基本步骤:相邻元素之间的比较 和 交换位置. 步骤分析: 令待排序序列为 ... PHP 数据结构 算法描述 冒泡排序 bubble sort 复制代码 代码如下: /** * 冒泡排序 bubble sort * * 原理:多次循环进行比较,每次比较时将最大数移动到最上面.每次循 ... 排序算法--冒泡排序(Bubble Sort) 算法简介(Introduction) Bubble sort is to compare adjacent elements of the list a ... 本文实例讲述了PHP排序算法之冒泡排序(Bubble Sort)实现方法.分享给大家供大家参考,具体如下: 基本思想: 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换 ... 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束. 从小到大排序: 原 ... 何为冒泡排序? 冒泡:就像气泡从水中冒出来一样 在冒泡排序中,最小数或最大数取决于您是按升序还是降序对数组进行排序,向上冒泡到数组的开头或结尾. 算法描述: 比较相邻的元素.如果第一个比第二个大,就交 ...
觉得有帮助的小伙伴点个赞吧
C语言经典练习题(2)——“冒泡排序(Bubble Sort)“相关推荐
最新文章
热门文章