选择排序--数据结构篇
Posted C语言编程学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序--数据结构篇相关的知识,希望对你有一定的参考价值。
选择排序解释
对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置,接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一个元素”进行比较如果后面的元素比他要小则用变量k记住它在数组中的位置(下标),等到循环结束的时候,我们应该找到了最小的那个数的下标了,然后进行判断,如果这个元素的下标不是第一个元素的下标,就让第一个元素跟他交换一下值,这样就找到整个数组中最小的数了。然后找到数组中第二小的数,让他跟数组中第二个元素交换一下值,以此类推。
选择排序代码
#include <stdio.h>
#include <stdlib.h>
#define MAX 255
int R[MAX];
void Select_Sort(int n)
{
int i,j,k;
for(i=1;i<n;i++)
{/* 做第i趟排序(1≤i≤n-1) */
k=i;
for(j=i+1;j<=n;j++) /* 在当前无序区R[i..n]中选key最小的记录R[k] */
if(R[j]<R[k])
k=j; /* k记下目前找到的最小关键字所在的位置 */
if(k!=i)
{ /* 交换R[i]和R[k] */
R[0]=R[i]; R[i]=R[k]; R[k]=R[0]; /* R[0]作暂存单元 */
} /* endif */
} /* endfor */
} /* end of Select_Sort */
int main()
{
int i,n;
puts("Please input total element number of the sequence:");
scanf("%d",&n);
if(n<=0||n>MAX)
{
printf("n must more than 0 and less than %d. ",MAX);
exit(0);
}
puts("Please input the elements one by one:");
for(i=1;i<=n;i++)
scanf("%d",&R[i]);
puts("The sequence you input is:");
for(i=1;i<=n;i++)
printf("%4d",R[i]);
Select_Sort(n);
puts(" The sequence after select_sort is:");
for(i=1;i<=n;i++)
printf("%4d",R[i]);
puts(" Press any key to quit...");
return 0;
}
你说你喜欢雨,但是你在下雨的时候打伞
你说你喜欢太阳,但你在阳光明媚的时候躲在阴凉的地方
你说你喜欢风,但是在刮风的时候你却关上了窗户
这就是为什么我会害怕你说你也喜欢广告
因为你连“Java编程精简实例”都没有关注
关注
C语言编程学习
长按二维码,关注我
以上是关于选择排序--数据结构篇的主要内容,如果未能解决你的问题,请参考以下文章