C Language

排序方法之选择排序法

2017-04-24  本文已影响0人  水刃一木__九日

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

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

下面举一个例子来说明:有{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;

}

结果:

选择排序法的结果
上一篇 下一篇

猜你喜欢

热点阅读