#GOC115755. 选择排序知识点
选择排序知识点
题目描述
就像我们排队是从高到矮一样,将同一类型的数据按一定顺序(从大到小或从小到大)排列称为排序。排序的算法有很多,其中选择排序是一种较简单的方法。
例如:输入5个正整数,把这5个数按由大到小的顺序排列。
分析:要把5个数按从大到小顺序排列,则排完后,第一个数最大,第二个数次大,……。因此,我们第一步可将第一个位置的数与其后的各个数依次比较,若发现有数比它大的,则互相交换位置,这样结束后,第一个位置的数就是最大的数。
这种排序方法叫选择排序:(从大到小)
for (int i=1;i<=n-1;i++) //确定第i个位置的数据
for(int j=i+1;j<=n;j++) //将第i个数与其后所有数比较
if (a[i]<a[j]) //若a[j]比a[i]大,则交换数据
{
t=a[i];a[i]=a[j];a[j]=t;
}
因此,可以用以下程序解决明明的问题:
#include<iostream>
using namespace std;
int a[1001];
int main()
{
int t;
for (int i=1;i<=1000;i++) //读入1000个初始数据
cin>>a[i];
for (int i=1;i<=999;i++) //确定第i个位置的数据
for (int j=i+1;j<=1000;j++) //将第i个数与其后所有数比较
if (a[i]<a[j]) //若a[j]比a[i]大,则交换数据
{
t=a[i];a[i]=a[j];a[j]=t;
}
for (int i=1;i<=1000;i++) //输出已排序的1000个数
cout<<a[i]<<" ";
return 0;
}