排序算法 之 选择排序


 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("
");
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("

");
33     for (int i =0 ;i < sizeof(data)/sizeof(int) ;++i)
34     {
35         printf("%d ",data[i]);
36     }
37     printf("
");
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
请按任意键继续. . .
To get,you have to give.To give,you need learn to insist.If you really find it is hard for you,then you quit.But once you quit.Don't complain.
原文地址:https://www.cnblogs.com/hit-ycy/p/10852302.html