排序算法总结(三)选择排序【Select Sort】

一.原理

选择排序的原理非常简单,就是选出最小(大)的数放在第一位,在剩下的数中,选出最小(大)的数,放在第二位......重复上述步骤,直到最后一个数。

二.过程

原始数据

排序算法总结(三)选择排序【Select Sort】

第一次排序,选出最小的数1,交换1与25的位置

排序算法总结(三)选择排序【Select Sort】

第二次排序,选出剩下的数据中最小的数4,交换7与4的位置

排序算法总结(三)选择排序【Select Sort】

重复以上过程,最后

排序算法总结(三)选择排序【Select Sort】

三.代码

#include <iostream>
#include <vector> using namespace std; template <typename T>
void SelectSort( vector<T> &nums ){
int minIndex;
for( int i = 0; i < nums.size(); i++ ){
minIndex = i;
for( int j = i+1; j < nums.size(); j++ ){
if( nums[j] < nums[minIndex]){
minIndex = j;
}
}
swap(nums[i],nums[minIndex]);
}
} int main(){
vector<int> nums{25,7,37,47,13,13,30,15,4,1,12,49};
cout<<" Before Sort:" ;
for( auto m: nums){
cout << m <<" ";
}
cout<<endl;
SelectSort( nums );
cout<< " After Sort:";
for( auto m: nums){
cout << m <<" ";
}
cout<<endl;
}

  

四.总结

1.选择排序的交换操作节约0-n-1之间,比较操作为(n-1)+(n-1)....+2+1 = n(n-1)/2

2.对于最好的情况,已经有序,交换0次,对于最差情况,逆序,交换n-1次

上一篇:Celery 实现异步任务-one


下一篇:数据库(SQL Server)管理数据库表~新奇之处