开发者社区> 问答> 正文

选择排序算法的设计与实现(要求统计排序时元素交换的次数)

老师让上交一个C语言程序,这是题目,我……

展开
收起
知与谁同 2018-07-20 18:22:05 1917 0
1 条回答
写回答
取消 提交回答
  • /*
    ================================================
    功能:选择排序
    输入:数组名称(也就是数组首地址)、数组中元素个数
    ================================================
    */
    /*
    ====================================================
    算法思想简单描述:

    在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
    然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环
    到倒数第二个数和最后一个数比较为止。

    选择排序是不稳定的。算法复杂度O(n2)--[n的平方]
    =====================================================
    */
    int select_sort(int *x, int n)
    {
    int i, j, min, t;int count=0;

    for (i=0; i<n-1; i++) /*要选择的次数:0~n-2共n-1次*/
    {
    min = i; /*假设当前下标为i的数最小,比较后再调整*/
    for (j=i+1; j<n; j++)/*循环找出最小的数的下标是哪个*/
    {
    if (*(x+j) < *(x+min))
    {
    min = j; /*如果后面的数比前面的小,则记下它的下标*/
    }
    }

    if (min != i) /*如果min在循环中改变了,就需要交换数据*/
    {
    t = *(x+i);
    *(x+i) = *(x+min);
    *(x+min) = t; count++;
    }
    }return count;
    }
    其中count为交换的次数,排序完后将count返回;具体想了解各种排序算法的性能比较可以到这下载 http://download.csdn.net/source/1400524
    2019-07-17 22:50:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载