2201_75843485 2024-02-29 21:41 采纳率: 50%
浏览 5
已结题

C语言 快速排序 算法 代码

快速排序
题目:

img


我的代码:


#include<iostream>
using namespace std;
const int  N = 1e6 + 10;
int n;
int main()
{
    void sort(int q[], int l, int r);
    int q[N];
    int i, j;
    scanf_s("%d", &n);
    for (i = 0; i < n; i++)
        scanf_s("%d", &q[i]);

    sort(q, 0, n - 1);
    for (j = 0; j < n; j++)
        printf("%d", q[j]);
    return 0;

}
void sort(int q[], int l, int r)
{
    if (l == r)return;
    int i, j, x;
    x = q[(l + r) / 2];
    i = l - 1, j = r + 1;
    do { i++, j++; } while (q[i]<x, q[j]>x);
    if (i < j)
    {
        do i++;
        while (q[i] < x);
        do j++;
        while (q[j] > x);
        swap(q[i], q[j]);
    }
       
    sort(q, l, i);
    sort(q, i + 1, r);
}

调试的结果

img

帮忙找找错

  • 写回答

5条回答 默认 最新

  • 2201_75843485 2024-03-05 14:23
    关注

    代码有基础的逻辑问题,例如j--而不是j++,还有要在sort函数中添加判断如果数组为零返回的语句

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 已采纳回答 3月5日
  • 创建了问题 2月29日