选择和冒泡排序

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。