选择排序(C++)

选择排序(C++)

选择排序:

  选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

  3,4,0,8,0,1

  3,4,0,8,0,1:首先在未排序中找到最小值0(第一个)

  0,4,3,8,0,1:[3],[0]交换,此时第一个位置已经排好

  0,4,3,8,0,1:再从未排序中找到最小值0

  0,0,3,8,4,1:[4],[0]交换,第二位置已经排好

  .

  .                     以此类推

  .

  0,0,1,3,4,8:最后结果

 

代码实现:

 

 1 #include<iostream>
 2 #include<vector>
 3 
 4 using namespace std;
 5 
 6 //选择排序
 7 template<typename Comparable>
 8 void selectSort(vector<Comparable>&a)
 9 {
10     int j;
11     int min;
12     Comparable temp;
13     for (int i = 0;i < a.size();i++)
14     {
15         //select
16         min = i;
17         for (j = i + 1;j < a.size();j++)
18         {
19             if (a[j] < a[min])
20             {
21                 min = j;
22             }
23         }
24 
25         //swap
26         if (min != i)
27         {
28             temp = a[i];
29             a[i] = a[min];
30             a[min] = temp;
31         }
32 
33     }
34 }
35 
36 int main()
37 {
38     vector<int> a = { 3,4,0,8,0,1 };
39     selectSort(a);
40     for (auto c : a)
41     {
42         cout << c<<endl;
43 
44     }
45     system("pause");
46 }

 

posted @ 2016-05-16 16:32  19Q3  阅读(187)  评论(0编辑  收藏  举报