开发者社区> 问答> 正文

C语言交换排序法

#include #define M 10 main() { int a[10]={3,6,8,4,5,1,10,7,9,8},i,j,t,max; for(i=0 ; i

展开
收起
知与谁同 2018-07-19 19:35:51 1530 0
3 条回答
写回答
取消 提交回答
  • 为什么在我这显示3 6 8 4 5 1 10 7 9 8,先把源码理清了再发上来
    你这个貌似是冒泡啊

    #include <stdio.h>
    int a[10000], b, c, d, e, f;
    void main()
    {
    printf("下面开始排列数字,请输入数字的个数:");
    scanf("%d", &e);
    printf("支持空格/回车/空格回车各一次一个数字,输完后回车输入原来的数字确认个数");
    printf("\n");
    for (f = 0; f < e; f++)
    {
    scanf("%d ", &a[f]);
    }
    while (1)
    {
    if (a[b] > a[b + 1])
    {
    c = a[b];
    a[b] = a[b + 1];
    a[b + 1] = c;
    d = 0;
    }
    else
    {
    d++;
    if (d == e)
    {
    break;
    }
    }
    b++;
    if (b == e - 1)
    {
    b = 0;
    }
    }
    printf("字符排列完毕,从小到大排序:");
    for (d = 0; d < e; d++)
    {
    printf("%d ", a[d]);
    }
    getchar();
    printf("\n");
    printf("请按任意键退出");
    getchar(); getchar();
    }

    这个是我自编自导自演的盗型修正版的冒泡排序法,你拿回去研究一下
    2019-07-17 22:50:33
    赞同 展开评论 打赏
  • 杀人者,打虎武松也。
    t=a[i];
    a[i]=a[max];
    a[max]=t;这个是经典的交换方法。
    取出最大值,进行交换,然后再比较啊
    用数组小标进行比较,两数相比,将较大的数的下表赋予max,这里的max指的是小标,而不是具体的数组。
    i如果与max不相等,将a[i]赋予a[max]
    你这个程序基本是错的。没有输出。
    2019-07-17 22:50:33
    赞同 展开评论 打赏
  • Nothing for nothing.
    道理很简单,就是i后面的所以数据,从i到最后这些数据选出最大的一个,让他和i这个空间的数据交换
    那么i前面的数据就是从最大的开始了
    2019-07-17 22:50:33
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载