选择排序核心思想 跟 冒泡排序差不多。
冒泡排序做得比较多无用功,而选择排序相对较少。
选择排序代码如下:
#include<stdio.h>void swap(int *a,int *b){ int t; t = *a; *a = *b; *b = t;}int main(){ int a[]={5,2,3,1,4}; int i,j,min,len; len = sizeof(a)/sizeof(int); /*-----主要语句-----*/ for(i=0;i<len;i++) { min = i; for(j=i+1;j<len;j++) if(a[min]>a[j]) min = j; if(min!=i) swap(&a[i],&a[min]); } /*---------------*/ for(i=0;i<len;i++) PRintf("%d,",a[i]); return 0;} 打印结果:1,2,3,4,5由上图可知道,选择排序在第二层for循环中,是用 min 来记录下较小数值的下标,一轮循环过后,min自然是最小的数值的下标,然后再做数值交换。
所以在二层for循环,一轮循环,才会做一次数值交换,而不像冒泡排序,只要是检测到比最小的还小的数值就马上做数值交换,而不等到整个循环结束(你怎么知道下一个会不会更小呢?)
因此冒泡排序是十分慢的算法
新闻热点
疑难解答