排序方法之选择排序法

上次,我们介绍了排序方法中的冒泡排序法,今天我们来介绍另一个比较重要的排序方法---选择排序法。

选择排序法,顾名思义就是通过选择,比较出的大(小)值放在前面,来依次进行排序。

下面举一个例子来说明:有{5,9,7,3}四个数,要求用选择排序法将四个数由大到小进行排序。

##第一步,在四个数{5,9,7,3}中找出其中的最大值9,然后将第一个数5与9进行调换。得到{9,5,7,3};

##第二步,在{9,5,7,3}中后三个数中找出其中的最大值7,然后将第2个数5与7进行调换。得到{9,7,5,3};

##第三步,在{9,7,5,3}中后二个数中找出其中的最大值5 ,5>3,无需交换位置。得到{9,7,5,3}。

##最后,得到结果:{9,7,5,3}。

下面用C程序来实现这个问题。

分析:

由上可知,4个数一共比较3次。那么n个数一共比较n-1次。首先,用外循环控制次数;其次,用内循环找出剩余元素中的最大值的序号,用k来储存序号的值;然后,将剩余元素中的第一个元素与剩余元素中的最大值;最后,输出结果。

程序:

#include<stdio.h>

int main()

{

int i,j,k,t;

int a[4];

printf ("please enter 4 integer numbers:\n");

for (i=0;i<4;i++)

{

scanf("%d",&a[i]);

}

for (i=0;i<3;i++)

{

k=i;

for(j=i+1;j<4;j++)

{

if (a[j]>a[k])

{

k=j;

}

}

if (k!=i)

{

t=a[k];

a[k]=a[i];

a[i]=t;

}

}

printf ("The sorted order:\n");

for (i=0;i<4;i++)

{

printf("%d ",a[i]);

}

printf("\n");

return 0;

}

结果:

选择排序法的结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,738评论 3 71
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,788评论 0 33
  • C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的 算法 题目:...
    Poison_19ce阅读 1,195评论 0 0
  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 4,054评论 2 13
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,235评论 0 52