[选择排序] 时间复杂度O(n^2)
思路:从未排序的序列中,找到最小的元素,放到序列的起始位置,
再从剩下没排序的里面,找到最小的,放到已经排序的末尾。
原地操作几乎是选择排序的唯一优点,当空间复杂度要求较高时,可以考虑选择排序;实际适用的场合非常罕见。
# include <stdio.h> #include <Eigen/Dense> #include <iostream> using namespace std; using namespace Eigen; int main(){ cout<<"Insert Sorting: "<<endl; VectorXd v(8); v<<4,2,1,5,3,2,11,9; for(int i=0;i<8;i++){ int tmp=i; for(int j=i+1;j<8;j++){ if(v(j)<v(tmp)) { tmp=j; } } if(tmp!=i){ int tmp1=v(tmp); v(tmp)=v(i); v(i)=tmp1; } } cout<<v<<endl; return 0; }