解题思路
给定一个指针min
第一轮扫描:min 初始化为1,扫出最小值,给指针min,放在第一位
第二轮扫描:min初始化为2,扫出最小值,给指针min,放在第二位
…
时间复杂度
N+(N-1)+(N-2)…0 -> o(N^2)
(图转自菜鸟教程)
c++实现
vector<int> selectSort(vector<int>& );
int main() {
vector<int> num = {1,4,2,3,5,7,6,200};
vector<int> res = selectSort(num);
for(int i=0; i<res.size();i++)
cout << res[i] << ',';
return 0;
}
vector<int> selectSort(vector<int>& nums){
int size = nums.size();
for(int i=0; i<size-1;i++) {
int min = i;
for(int j=i+1;j<size-1;j++){ //j的开始位置
if(nums[min]>nums[j]) min = j ;} //注意是赋值
swap(nums[i],nums[min]);
}
return nums;
}
如果您觉得对您有帮助,不妨点个赞吧!