快速排序有些数组会出问题,求指教哪里不对
#include <stdio.h>#include <stdlib.h>
void quicksort (int arr[], int left, int size) // size为数组元素个数
{
int i,j;
i = left;//左边数据的位置
j = size-1;//右边数据的位置
int temp; //替换用的变量
int pivot = arr[(size-1)/2]; //基准点
while (i <= j)
{
while (arr < pivot)
{
i++;
}
while (arr > pivot)
{
j--;
}
if (i <= j)
{
temp = arr;
arr = arr;
arr = temp;
i++;
j--;
}
}
if (i < (size-1))
{
quicksort (arr, i, size-1);
}
if (j > left)
{
quicksort (arr, left, j);
}
}
//打印数组
void printarr (int arr[], int size)
{
for (int i = 0; i < size; i++)
{
printf ("%d ", arr);
}
printf ("\n");
}
int main()
{
int arr = {1, 5, 2, 2, 3, 4, 3};
int size = 7;
int left = 0;
printarr (arr, size);
quicksort (arr, left, size);
printarr (arr, size);
return 0;
}
代码里给的数组排序结果是错的,不知道为什么 跟小甲鱼老师的代码比对一下先 BngThea 发表于 2018-4-7 16:58
跟小甲鱼老师的代码比对一下先
对比了,我只是把老师的right换成size了,但是在函数里把size-1了,效果应该是一样的,结果就不对,不明白哪里不对 毛毛虫爬行中 发表于 2018-4-7 17:28
对比了,我只是把老师的right换成size了,但是在函数里把size-1了,效果应该是一样的,结果就不对,不明 ...
我这里的size就是数组的大小,跟length是相等的
页:
[1]