1 //1.簡單選擇排序 2 void selectSort(int a[],int num) 3 { 4 int min=0,temp=0;//記錄最小數對應的下標 5 for(int i=0;i<num-1;i++) 6 { 7 min=i; 8 for (int j=i+1;j<num;j++) 9 { 10 if (a[min]>a[j]) 11 { 12 min=j; 13 } 14 } 15 if (min!=i) 16 { 17 temp=a[i]; 18 a[i]=a[min]; 19 a[min]=temp; 20 } 21 } 22 } 23 24 25 int main() 26 { 27 int array[9]={0}; 28 srand(time(NULL)); 29 for (int i=0;i<9;i++) 30 { 31 array[i]=rand()%100; //產生0-99的隨機數 32 } 33 cout<<"排序以前的數組\n"; 34 print(array,9); 35 selectSort(array,9); 36 cout<<"排序以後的數組\n"; 37 print(array,9); 38 39 system("pause"); 40 return 0; 41 }
運行結果:
數組
2.時間複雜度計算
第i趟須要進行n-i次比較,所以比較次數爲n(n-1)/2. 交換次數,最好交換0次,最壞交換次數爲n-1次。 最終的排序次數是比較和交換次數之和。所以,最終的總時間複雜度仍未爲(n2)。spa