开发者社区 问答 正文

C语言中的选择排序法是什么?

具体说一下是什么?

展开
收起
知与谁同 2018-07-17 09:17:27 1764 分享 版权
4 条回答
写回答
取消 提交回答
  • TA有点害羞,没有介绍自己...
    每次选择没有排序元素中最小的排到前面
    时间复杂度O(n^2)
    空间复杂度O(n)
    2019-07-17 22:49:36
    赞同 展开评论
  • 首先从要选择的数中选择最大的数,将它放在第一个位置,然后从剩下的数中选择最大的数放在第二个位置,直到最后从剩下的两个数中选择最大的数放在倒数第二个位置,剩下的一个数放在最后位置,完成排序。

    这类问题你用搜索器搜一下就有上千上万篇。。
    2019-07-17 22:49:36
    赞同 展开评论
  • 就像这样啊~输入10个数进行排序
    main()

    {int*p,i,a[10];

    p=a;

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

    scanf("%d",p++);

    p=a

    sort(p,10);

    for(p=a,i=0;i<10;i++)

    {printf("%d",*p);p++;}

    }

    sort(int x[ ],int n)

    {int i,,j,k,t;

    for(i=0;i<n-1;i++)

    {k=i;

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

    if(x[j]>x[k]) k=j;

    if(k!=i)

    {t=x[i];x[i]=x[k];x[k]=t;}

    }

    }
    2019-07-17 22:49:36
    赞同 展开评论
  • 选择排序(Selection sort)是一种简单直观的排序算法。工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 

    以下是一个实现选择排序的例子: #define SWAP(x, y, t)  ((t) = (x), (x) = (y), (y) = (t))
     //将list中的n个数据,通过选择排序算法排序。
    void selete_sort(int list[], int n)
    {
        int i, j, min, temp;
        for (i = 0; i < n - 1; i++){
            min = i;
            for (j = i + 1; j < n; j++)//找出最小元素的下标。
                if (list[j] < list[min])
                    min = j;
            SWAP(list[i], list[min], temp);//交换最小元素到当前起始位置。
        }
    }

    2019-07-17 22:49:36
    赞同 展开评论
问答分类:
问答地址: