# 基本思想
每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止。
排序实例
初始关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 [38 65 97 76 49 27 49]
第二趟排序后 13 27 [65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [76 97 65 49 ]
第五趟排序后 13 27 38 49 49 [97 65 76]
第六趟排序后 13 27 38 49 49 65 [97 76]
第七趟排序后 13 27 38 49 49 65 76 [97]
最后排序结果 13 27 38 49 49 65 76 97
# C++代码
# include<iostream> # include<vector> using namespace std; void SelectSort(vector<int> vec) { for(int i=0;i<vec.size()-1;++i) { // 初始化数组中最小元素的位置 int min = i; // 寻找数组中最小元素的位置 for(int j=i+1;j<vec.size();++j)//注意边界条件 j=i+1 { if(vec[min]>vec[j]) min = j; } // 更新最小元素 if(min!=i) { int temp = vec[i]; vec[i]=vec[min]; vec[min]=temp; } } // 打印排序后的数组 for(int i=0;i<vec.size();++i) cout<<vec[i]<<endl; } int main() { vector<int > vec={49,38,65,97,76,13,27,49}; SelectSort(vec); return 0; }