首页 > 代码库 > 选择和冒泡排序

选择和冒泡排序

  1 #include <stdio.h>  2   3 int main()  4 {  5         int arr[5] = {4, 7, 9, 2, 6};  6         int brr[5] = {7, 8, 4, 2, 1};  7 /*冒泡排序*/  8         int i, j, tmp=0, swap=0;  9  10         for(i=0; i<5; i++) 11                 for(j=0; j<4-i; j++){ 12                         if(arr[j] < arr[j+1]){ 13                                 tmp = arr[j]; 14                                 arr[j] = arr[j+1]; 15                                 arr[j+1] = tmp; 16                         } 17                 } 18 /* 选择排序 */ 19         for(i=0; i<5; i++) 20                 printf("%d \n", arr[i]); 21  22         for(i=0; i<5; i++){ 23                 tmp = i; 24                 for(j=i; j<5; j++){ 25                         if(brr[tmp] < brr[j]) 26                                 tmp = j; 27                 } 28                 swap = brr[i]; 29                 brr[i] = brr[tmp]; 30                 brr[tmp] = swap; 31         } 32         for(i=0; i<5; i++) 33                 printf("%d \n", brr[i]); 34 }
  1.  冒泡排序(大到小):比如有五个数,将第一个与第二个比较,再将第二个与第三个比较。。如果后者比前者大值是要交换的,自然得到最后一个最小,请注意 j+1是已经比较到最后一个的,把i=0带进去一试就知道;每一论都是从最前面开始比较的,把最小的推到最后,得到最小值后下一轮将不再比较。
  2. 选择排序(大到小):每一次把最大的值放到最前面,tmp用来存放最大值的下标,最后再与当前下标i的值交换,下一次从又下一个数开始,恰好与上面的冒泡不同,冒泡是将得到的值放到最后了。

选择和冒泡排序