选择和冒泡排序

  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的值交换,下一次从又下一个数开始,恰好与上面的冒泡不同,冒泡是将得到的值放到最后了。

你可能感兴趣的:(冒泡排序)