选择排序(选择排序)

今天,数学老师找到了明明,让他把1000个学生的数学成绩按从高分到低分输入电脑。

就像我们排队是从高到矮一样,将同一类型的数据按一定顺序(从大到小或从小到大)排列称为排序。排序的算法有很多,其中选择排序是一种较简单的方法。

例如:输入5个正整数,把这5个数按由大到小的顺序排列。

分析:要把5个数按从大到小顺序排列,则排完后,第一个数最大,第二个数次大,……。因此,我们第一步可将第一个位置的数与其后的各个数依次比较,若发现有数比它大的,则互相交换位置,这样结束后,第一个位置的数就是最大的数。         

原始数据

20

10

50

40

60

用1号数据和后面2到5号的数据依次比较,确定“第一大”的数据。

第一次是1号和2号比较,20>10,所以数据不变。


 

image.png

    

第二次是1号和3号比较,20<50,所以交换数据。

image.png

第三次是1号和4号比较,50>40,所以数据不变。


 

image.png

第四次是1号和5号比较,50<60,所以数据交换。

image.png

确定第一大的数据是 60。

image.png

 用2号数据和后面3到5号的数据比较,确定“第二大”的数据。

image.png

image.png

确定第二大的数据是 50

下标

1

2

3

4

5

数据

60

50

10

20

40

……

……经过多轮比较,最后确定的顺序是:

60

50

40

20

10

这种排序方法叫选择排序:(从大到小)

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;

  }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值