冒泡法从开始学习C语言就知道有这么算法,可是今天当我再一次编写code时,又加深了我对它的好感,原来把最外面的for循环给替换成while时,程序更有连贯性,当然了用while写的比较少。

冒泡排序算法的运作如下:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 

下面是code:

 
  
  1. #include <stdio.h> 
  2.  
  3. void bubble_Sort(int arr[], int count
  4.     int i = count, j; 
  5.     int temp
  6.  
  7.     for(i = count ; i>0 ; i--) //while(i-- > 0) 
  8.     { 
  9.         for(j = 0; j < i - 1; j++) 
  10.         { 
  11.             if(arr[j] > arr[j + 1]) 
  12.             {    
  13.                 temp = arr[j]; 
  14.                 arr[j] = arr[j + 1]; 
  15.                 arr[j + 1] = temp
  16.             } 
  17.         } 
  18.     } 
  19.  
  20. int main(int arc, char* const argv[]) 
  21.     int i,arr[] = {5, 4, 1, 3, 6}; //测试数据 
  22.  
  23.     bubble_Sort(arr, 5); //冒泡排序 
  24.  
  25.     for(i = 0; i < 5; i++)//打印排序结果 
  26.       printf("%4d", arr[i]); 

结果如下: