#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;   

}