第七周--简单选择排序
题目描述
读入N个整数,利用简单选择排序法对这些数排序,输出排序后的N个数,两个数之间用空格间隔。
这里排序指的是升序。
输入格式
两行,第一行一个正整数N,表示待排序的数的个数。
第二行为N个整数。
输出格式
一行,排序后的N个数。
输入输出样例
输入
5 4 2 4 5 1
输出
1 2 4 4 5
简单选择排序:第i趟在n-i+1个记录中取关键码最小的记录作为有序序列中的第i个记录
#include<bits/stdc++.h>
using namespace std;
void selectSort(int r[],int n)
{
int i;
int tmp;
int j;
int index;//用index记录在一次比较中关键码最小的位置
for(i=1;i<n;i++)
{
index=i;
for(j=i+1;j<=n;j++)
if(r[j]<r[index]) index=j;
if(index!=i)//确定关键码的最终位置将i与index关键码交换
{
tmp=r[i];
r[i]=r[index];
r[index]=tmp;
}
}
}
int main()
{
int n,a[100001];
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
selectSort(a,n);
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
浙公网安备 33010602011771号