代码如下:
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 static void selectionSort(vector<int> &v){ 5 int sz = v.size(); 6 for(int i=0;i<sz;i++){ 7 int minpos = i; 8 for(int j=i;j<sz;j++){ 9 if(v[j] < v[minpos]) 10 minpos = j; 11 } 12 swap(v[i], v[minpos]); 13 } 14 return; 15 } 16 17 int main(){ 18 int n; 19 while(cin>>n){ 20 vector<int> v(n); 21 for(int i=0;i<n;i++) 22 cin>>v[i]; 23 selectionSort(v); 24 for(int num : v) 25 cout<<num<<","; 26 } 27 return 0; 28 }
选择排序就是每次从无序部分选出最小或者最大的,放到该无序部分的开始或末尾位置。
选择排序在交换过程中会破坏相对顺序,所以是一种不稳定的排序算法
时间复杂度O(n²)
浙公网安备 33010602011771号