冒泡法从开始学习C语言就知道有这么算法,可是今天当我再一次编写code时,又加深了我对它的好感,原来把最外面的for循环给替换成while时,程序更有连贯性,当然了用while写的比较少。
冒泡排序算法的运作如下:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
下面是code:
- #include <stdio.h>
- void bubble_Sort(int arr[], int count)
- {
- int i = count, j;
- int temp;
- for(i = count ; i>0 ; i--) //while(i-- > 0)
- {
- for(j = 0; j < i - 1; j++)
- {
- if(arr[j] > arr[j + 1])
- {
- temp = arr[j];
- arr[j] = arr[j + 1];
- arr[j + 1] = temp;
- }
- }
- }
- }
- int main(int arc, char* const argv[])
- {
- int i,arr[] = {5, 4, 1, 3, 6}; //测试数据
- bubble_Sort(arr, 5); //冒泡排序
- for(i = 0; i < 5; i++)//打印排序结果
- printf("%4d", arr[i]);
- }
结果如下:
转载于:https://blog.51cto.com/dong4716138/1124586