[选择排序] 时间复杂度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;
}

  

 

posted @ 2017-03-27 21:15  xy123001  阅读(263)  评论(0编辑  收藏  举报