选择排序--数据结构篇

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语言编程学习

长按二维码,关注我



以上是关于选择排序--数据结构篇的主要内容,如果未能解决你的问题,请参考以下文章

在路上---学习篇Python 数据结构和算法 -- 冒泡排序选择排序插入排序

Qz学算法-数据结构篇(排序算法--冒泡选择)

排序算法篇--之简单选择排序

第三篇排序算法|选择排序

选择排序--数据结构篇

Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序