mx_try 2017-08-22 04:00 采纳率: 0%
浏览 848
已采纳

为什么我这个快排没有用?

#include
void swap(int *a, int *b) {
int temp = 0;
temp = *b;
*b = *a;
*a = temp;
}

int Rand(int low, int high) {
int size = high - low + 1;
return low + rand() % size;
}
int Partition(int a[],int start,int end,int length) {
int index = Rand(start, end);
swap(&a[index], &a[end]);

int small = start - 1;
for (index = start; index < end; ++index) {
    if (a[index] < a[end]) {
        ++small;
        if (small != index)
            swap(&a[index], &a[small]);
    }
}

++small;
swap(&a[small], &a[end]);

return small;

}

void Qsort(int a[], int length, int start, int end) {
if (start == end)
return;

int index = Partition(a, start, end, length);
if (index > start) {
    Qsort(a, start, index - 1, length);

}
if (index < end) {
    Qsort(a, index + 1, end, length);

}

}

void main() {
int a[] = { 7,6,44,8,2,3,1,9,6 };

Qsort(a, 9, 0, 8);

for (int j = 0; j < 9; j++) {
    printf("%d ", a[j]);
}

}
程序修改后,还是出错了,
运行结果如下:
图片说明

  • 写回答

2条回答 默认 最新

  • 大米粥哥哥 2017-08-22 13:03
    关注

    你参数传错了 如下

     void Qsort(int a[], int length, int start, int end) {
        if (start == end)
            return;
        int index = Partition(a, start, end, length);
        if (index > start) {
            Qsort(a,length, start, index - 1);
    
        }
        if (index < end) {
            Qsort(a, length,index + 1, end );
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题