首页 > 代码库 > 选择排序
选择排序
选择排序思路在于选择
先认为第一个数是最大值
将当前最大值序号存在一个变量中
将剩下的数依次与最大值比较
比较到最后将最大值序号指向数与当前第一个数交换
#include <iostream> #include <sstream> using namespace std; template<typename T> void selection_sort (T * array, int len,bool ascending) { T tmp = 0; int pos = 0; if(ascending) { for(int i = 0; i < len-1; i ++) { pos = i; for(int j = i + 1; j < len; j++) { if(array[j]>array[pos]) pos = j; } if(pos!=i) { tmp = array[i]; array[i] = array[pos]; array[pos] = tmp; } } } else { for(int i = 0; i < len-1; i ++) { pos = i; for(int j = i + 1; j < len; j++) { if(array[j]<array[pos]) pos = j; } if(pos!=i) { tmp = array[i]; array[i] = array[pos]; array[pos] = tmp; } } } } int main(int arc,char** argv) { if(arc<2) { cerr<<"argument is not enough"<<endl; return 1; } string str = argv[1]; stringstream ss; ss <<str; int number; ss >> number; cout << "number:" << number <<endl; float * data = http://www.mamicode.com/new float[number]; for(int i = 0; i<number;i++) cin>>data[i]; cout<<"data"<<endl; for(int i = 0; i<number;i++) cout<<data[i]<<endl; selection_sort<float>(data,number,true); cout<<"sorted data"<<endl; for(int i = 0; i<number;i++) cout<<data[i]<<endl; delete [] data; return 0; }
选择排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。