C语言排序算法——简单选择排序算法
冒泡排序算法的思想是不断的交换,通过交换完成最终的排序。
选择排序的基本思想是每一趟在n-i+1个记录中选取最小的记录,作为第i个的记录。
1 void SimpleSelectSort(int *p) 2 { 3 int i,j,min; 4 for(i=0;i<10;i++) 5 { 6 min=i; //将当前下标定义为最小下标 7 for(j=i+1;j<10;j++) 8 { 9 if(p[min>p[j]]) //如果有小于当前最小值的 10 { 11 min=j; //将此值的下标赋值给min 12 } 13 } 14 if(i!=min) //若min不等与i,说明找到了最小值,进行交换 15 { 16 swap(p,i,min); 17 } 18 } 19 }
特点:移动次数少
比较次数:无论什么情况,比较次数为n-1+n-2+...+2+1=n(n-1)/2
交换次数:最好为0,最差为n-1
时间复杂度O(n2)