详解冒泡排序法
冒泡排序是一种简单的排序算法。
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
1 /*//冒泡排序法 2 #include<stdio.h> 3 #define N 5 4 #include<stdlib.h> 5 6 int main() 7 { 8 int i, j;//循环变量 9 int temp;//用来交换的临时变量 10 int nums[N] = { 16,25,9,90,23 }; 11 //外层循环控制轮数 12 for (i = 0; i < N - 1; i++)//5个数只用比较4次,所以 N - 1 13 { 14 for (j = 0; j < N - i - 1; j++)//内层循环控制 每轮的比较次数 15 { 16 if (nums[j] > nums[j + 1]) 17 //如果前面的一个数小于后面的一个值,那么进行交换 18 { 19 temp = nums[j]; 20 nums[j] = nums[j + 1]; 21 nums[j + 1] = temp; 22 } 23 } 24 } 25 printf("排序后的结果:\n"); 26 for (i = 0; i < N; i++) 27 { 28 printf("%d\t", nums[i]); 29 } 30 return 0; 31 } 32 */
冒泡排序算法的原理如下:
-
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
-
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
-
针对所有的元素重复以上的步骤,除了第一个。
-
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。