排序1-簡單選擇排序

  1. 選擇排序的基本思想: 
    對n個記錄進行掃描,選擇最小的記錄將其輸出,接着在剩下的n-1個記錄中掃描,選擇最小的記錄將其輸出,……不斷重複這個過程,直到剩下最後一個記錄爲止。
 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

相關文章
相關標籤/搜索