开发者社区> 问答> 正文

快速排序算法的C语言代码,要求有运行过程即每运行一步就输出一次结果

快速排序算法的C语言代码,要求有运行过程即每运行一步就输出一次结果

展开
收起
知与谁同 2018-07-16 10:41:01 3918 0
1 条回答
写回答
取消 提交回答
  • #include<cstdio>
    #define Swap(a,b) {a^=b;b^=a;a^=b;}
    #define MAXN 1000
    int A[MAXN],N;

    int PRINT(int s=-1,int t=N,int x=0)
    { for(int i=0;i<N;++i)
    { if(i==s)printf("{");
    printf("%d",A[i]);
    if(i==t)printf("}");printf(" ");
    }
    if(!(s==-1&&t==N))printf("\n上一步骤将{}中的数以 %d 为比较值分成了两个区域\n\n",x);
    else printf("\n已完成排序\n");
    }

    int qsort(int s,int t)
    { int i=s,j=t,x=A[(i+j)/2];
    for(;i<=j;)
    { for(;A[i]<=x;++i);
    for(;A[j]>=x;--j);
    if(i<=j)
    { Swap(A[i],A[j]);
    i++;j--;
    }
    }
    PRINT(s,t,x);
    if(s<j)qsort(s,j);if(i<t)qsort(i,t);
    }

    int main()
    { scanf("%d",&N);
    for(int i=0;i<N;++i)scanf("%d",A+i);
    qsort(0,N-1);
    PRINT();
    //for(;;);
    return 0;
    }
    如果不用文件输入输出请启用倒数第3行的注释。否则请自行增加文件句柄。
    2019-07-17 22:50:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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