选择排序(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 }
时间: 2024-10-28 09:56:10