题目描述
用选择法对10个整数排序。
输入描述
无
输出描述
无
样例输入
9 8 7 6 5 4 3 2 1 0
样例输出
0
1
2
3
4
5
6
7
8
9
示例代码
#include <iostream>
using namespace std;
int main(){
int a[10];
int pos,temp,flag,k=0;
for(int i=0;i<10;i++)
cin>>a[i];
while(k<10){
flag=0;
pos=k; //k为有序区域的边界
for(int i=k+1;i<10;i++){//在无序区域寻找最小值
if(a[pos]>a[i]){
flag=1;//有位置变动
pos=i;
}
}
if(flag){//如果有位置变动
temp=a[pos];
a[pos]=a[k];
a[k]=temp;
}
k++;
}
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
return 0;
}
提示:
选择排序是从未排序的数据中选出最小的一个元素,顺序放在已经排好序的数列最后。
空间复杂度为O(1)
时间复杂度为O(n^2)
算法的稳定性是指:对于待排序的序列中,相同项的原来次序不能被改变,选择排序算法不稳定,体现在将最小元素与排好序的后一个元素交换位置时,可能会造成相同项次序交换。
算法的适应性是指算法因原序列有序而更高效,选择排序不具有适应性。