标题:关于快排的一个bug
取消只看楼主
mscool
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2013-5-9
结帖率:92.31%
已结贴  问题点数:20 回复次数:3 
关于快排的一个bug
#include <stdio.h>

int a[8] = {3,5,0,8,2,4,9,3};

int partition(int start, int end)
{
    int len = end - start, j, mid;
    int pivot = a[start];
    int temp[len];

    for (j = start + 1; j <= end; j++)
        temp[j] = a[j];

    for (j = start + 1; j <= end; j++)
    {
        if (temp[j] < pivot)
        a[start++] = temp[j];
        else
        a[end--] = temp[j];
    }

    a[start] = pivot;

    return mid = start;
}

void quicksort(int start, int end)
{
    int mid;

    if (end > start)
    {
        mid = partition(start, end);
        quicksort(start,mid - 1);
        quicksort(mid + 1, end);
    }
}

int main(void)
{
    int i;

    quicksort(0,7);

    for (i =0; i <= 7; i++)
        printf("%d\n", a[i]);

    return 0;
}


程序出错 实在找不出来bug 哪位帮我查一下错在哪里?谢
搜索更多相关主题的帖子: include return start 
2013-08-23 07:15
mscool
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2013-5-9
得分:0 
回复 6楼 guhemeng
这个是保存原始数值啊 因为要改变a[]  所以先把其原始数据保存到temp[]中 不然 容易丢失 或者篡改原始数据 就不准确了
2013-08-23 14:28
mscool
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2013-5-9
得分:0 
回复 4楼 就少个空格啊
谢 我仍是对细节太马虎了
2013-08-23 14:32
mscool
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2013-5-9
得分:0 
回复 6楼 guhemeng
如果不像我那样做 你要怎么实现你的这个想法
2013-08-23 14:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-419543-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014130 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved