2 qq 29923139 qq_29923139 于 2015.07.21 20:30 提问

请问怎么在此程序中使比较次数交换次数输出程序中错误在哪里

#include
#include
#include
#define max_len 5

void generate_arr(int r[], int rLen);
void Qsort(int r[], int l, int h);

int main()
{
int i;
int r[max_len];
generate_arr(r, max_len); //使用方式
Qsort(r,0,max_len-1); //调用快速排序
for(i=0; i<max_len; i++) {
printf("%d, ", r[i]);
}
printf("\n");
return 0;
}

/**

  • 生成随机整数序列
  • r数组用于存储随机序列
  • rLen表示随机序列的长度
    */
    void generate_arr(int r[], int rLen)
    {

    int i;
    srand(1);
    for(i=0; i<rLen; i++)
    {
    r[i] = rand();

    }
    }
    void Qsort(int r[], int l, int h)
    {
    int i, j, x;
    int p=0,k=1;
    if (l {
    i = l;
    j = h;
    x =r[i];
    while (i {
    while(i = x)
    {j--;
    p++;
    } /* 从右向左找第一个小于x的数 /
    if(i < j)
    { r[i++] = r[j];
    k=k+1;
    }
    while(i < j && r[i] <= x)
    { i++;
    p++;
    } /
    从左向右找第一个大于x的数 /
    if(i < j)
    { r[j--] = r[i];
    k=k+1;
    }
    }
    r[i]=x;printf("%s%d","compare:",p);
    printf("%s%d","exchange:",k);
    Qsort(r, l, i-1); /
    递归调用 */
    Qsort(r, i+1, h);
    }

    return;
    }

2个回答

caozhy
caozhy   Ds   Rxr 2015.07.21 20:36
u014306011
u014306011   2015.07.28 22:21

你的快速排序是自己写的吗?代码太长也没仔细看,你可以直接去百度搜一下快排的代码。应该是你的快排那里写错了。

Csdn user default icon
上传中...
上传图片
插入图片