1. 程式人生 > >排序算法 之 選擇排序

排序算法 之 選擇排序

ptr swap 位置 ostream sizeof printf 是把 () nullptr



 1 #include <iostream>
 2 using namespace std;
 3 void selectSort(int data[],int length)
 4 {
 5     if (data == nullptr || length <= 0)
 6     {
 7         return;
 8     }
 9     for (int i = 0 ,j;i < length-1 ; ++i)
10     {
11         int least = i+1 ;
12         for(j = i+1
; j < length ; j++) 13 { 14 if (data[j] < data[least]) 15 { 16 least = j ; 17 } 18 } 19 swap(data[i],data[least]); 20 printf("第%d次排序後的結果 : " ,i+1); 21 for (int i =0 ;i < length ;++i) 22 {
23 printf("%d ",data[i]); 24 } 25 printf("\n"); 26 } 27 } 28 int main() 29 { 30 int data[] = {2,5,1,4,0,-3,59,-78,62,3}; 31 selectSort(data,sizeof(data)/sizeof(int)); 32 printf("\n\n"); 33 for (int i =0 ;i < sizeof(data)/sizeof(int) ;++i) 34 {
35 printf("%d ",data[i]); 36 } 37 printf("\n"); 38 return 0; 39 }
///可以發現每次排序後,總是把次小的找出來,放到對應的位置上

最後的結果為:

第1次排序後的結果 : -78 5 1 4 0 -3 59 2 62 3
第2次排序後的結果 : -78 -3 1 4 0 5 59 2 62 3
第3次排序後的結果 : -78 -3 0 4 1 5 59 2 62 3
第4次排序後的結果 : -78 -3 0 1 4 5 59 2 62 3
第5次排序後的結果 : -78 -3 0 1 2 5 59 4 62 3
第6次排序後的結果 : -78 -3 0 1 2 3 59 4 62 5
第7次排序後的結果 : -78 -3 0 1 2 3 4 59 62 5
第8次排序後的結果 : -78 -3 0 1 2 3 4 5 62 59
第9次排序後的結果 : -78 -3 0 1 2 3 4 5 59 62
-78 -3 0 1 2 3 4 5 59 62
請按任意鍵繼續. . .

排序算法 之 選擇排序