选择排序
输入:第一行输入n,接下来输入n个元素,输出:最后经过选择排序后的顺序 ,排序的次数 步骤:重复执行n-1次下述处理 找出未排序部分中最小值的位置minj 将minj位置的元素与未排序部分的起始元素交换#include<iostream>#include<cstdio>using namespace std;int c
·
输入:第一行输入n,接下来输入n个元素,
输出:最后经过选择排序后的顺序 ,排序的次数
步骤:
重复执行n-1次下述处理
找出未排序部分中最小值的位置minj
将minj位置的元素与未排序部分的起始元素交换
#include<iostream>
#include<cstdio>
using namespace std;
int cnt;
void print(int a[],int n){
for(int i=0;i<n;i++){
if(i!=0)
cout<<" ";
cout<<a[i];
}
cout<<endl;
}
int selectSort(int a[],int n){
int minj;
cnt=0;
for(int i=0;i<n-1;i++){ //i为未排序部分的起始位置
minj=i;
for(int j=i;j<n;j++){
if(a[j]<a[minj]){ //找出未排序部分中最小值的位置minj
minj=j;
}
}
//将minj位置的元素与为排序部分的起始元素交换
int t=a[i];
a[i]=a[minj];
a[minj]=t;
if(i!=minj)
cnt++;
}
return cnt;
}
int main(){
int n;
int a[101];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];}
cnt=selectSort(a,n);
print(a,n);
cout<<cnt<<endl;
return 0;
}
已为社区贡献9条内容
所有评论(0)