//简单选择排序
include[HTML_REMOVED]
using namespace std;
void selectsort(int data[],int n){
for(int i=1;i<n;i){
//每次从后面给你选一个最小的出来
int min=i;
for(int j=i+1;j<=n;j){
if(data[j]<data[min]) min=j;
}
if(min!=i){
int temp=data[min];
data[min]=data[i];
data[i]=temp;
}
}
}
int main()
{
int data[]={100,1,3,5,7,9,2,4,6,8,0};
for(int i=1;i<=10;i)
cout<<data[i]<<’ ‘;
selectsort(data,10);
cout<<endl;
for(int i=1;i<=10;i)
cout<<data[i]<<’ ‘;
}
//分析
//比较次数是固定的,所以复杂度n²,和折半插入一样,比较次数和初始状态无关
//移动次数比较少,最多移动3(n-1),第一个元素最大,其余有序
//空间 O1
//不稳定,大的元素和小的交换位置,改变了相同大小元素相对次序
//那么顺序表和链表应该都可以
//适合n小情况,移动比较少
//n²复杂度,无最好情况,不稳定,这么多debuff加满,他都有自己最适合的情况
//不可妄自菲薄,每个人都有自己的天地,要明白自己的优势所在
//在哪里生长,就在哪里开花