鱼C论坛

 找回密码
 立即注册
查看: 2547|回复: 2

C语言选择排序的解法

[复制链接]
发表于 2020-12-28 17:58:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
C语言选择排序的解法
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-28 18:14:25 | 显示全部楼层
  1. 1 #include <stdio.h>
  2. 2
  3. 3 // 选择排序:相邻两个元素进行比较,把大的元素的下标记录下来,一轮完整的比较之后,若最大值的下标不是len-i,则两个元素交换位置
  4. 4 void select_sort(int arr[],int len)
  5. 5 {
  6. 6     for(int i=0; i<len; i++) // 总共要找len-1次最大值,每次找最大值的区间 [0,len-i]
  7. 7     {
  8. 8         int index_nmax = 0;
  9. 9         for(int j=1; j<len-i; j++) // 因为假设了0下标就是最大值,所以循环可以从1开始
  10. 10         {
  11. 11             if(arr[j] > arr[index_nmax])
  12. 12             {
  13. 13                 index_nmax = j;
  14. 14             }
  15. 15         }        
  16. 16         if(index_nmax != len-i-1) // 避免无意义的位置交换
  17. 17         {
  18. 18             int tmp = arr[index_nmax];
  19. 19             arr[index_nmax] = arr[len-i-1];
  20. 20             arr[len-i-1] = tmp;
  21. 21         }
  22. 22     }   
  23. 23 }
  24. 24
复制代码

来自https://www.cnblogs.com/usingnamespace-caoliu/p/9428115.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-29 00:41:40 | 显示全部楼层
# include <stdio.h>
int main(void)
{
    int i, j;  //循环变量
    int MinIndex;  //保存最小的值的下标
    int buf;  //互换数据时的临时变量
    int a[] = {5, 5, 3, 7, 4, 2, 5, 4, 9, 1, 8, 6};
    int n = sizeof(a) / sizeof(a[0]);  //存放数组a中元素的个数
    for (i=0; i<n-1; ++i)  //n个数比较n-1轮
    {
        MinIndex = i;
        for (j=i+1; j<n; ++j)  //每轮比较n-1-i次, 找本轮最小数的下标
        {
            if (a[MinIndex] > a[j])
            {
                MinIndex = j;  //保存小的数的下标
            }
        }
        if (MinIndex != i)  /*找到最小数之后如果它的下标不是i则说明它不在最左边, 则互换位置*/
        {
            buf = a[MinIndex];
            a[MinIndex] = a[i];
            a[i] = buf;
        }
    }
    printf("最终排序结果为:\n");
    for (i=0; i<12; ++i)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-26 19:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表