查错void quicksort(int *a,int start,int end) { int i=start; int j=end; int temp=a[i]; while(i<j) { while(i<j&&a[j]>=temp) { j--; } if(i<j) { a[i]=a[j]; i++; } while(i<j&&a[i]<=temp) { i++; } if(i<j) { a[j]=a[i]; j--; } } a[i]=temp; quicksort(a,start,i-1); quicksort(a,i+1,end); }
时间: 2023-11-27 13:54:22 浏览: 62
Java各种排序算法汇总(冒泡,选择,归并,希尔及堆排序等)
这段代码实现的是快速排序算法,但是在实现过程中似乎有一个问题,因为临时变量temp被赋值为a[i],但是在后面执行过程中并没有使用。另外,变量i并没有判断是否越界,因此还需要加上一个判断条件i<=end。下面是修改后的代码:
```
void quicksort(int *a,int start,int end) {
if(start>=end) {
return;
}
int i=start;
int j=end;
int temp=a[i];
while(i<j) {
while(i<j && a[j]>=temp) {
j--;
}
if(i<j) {
a[i]=a[j];
i++;
}
while(i<j && a[i]<=temp) {
i++;
}
if(i<j) {
a[j]=a[i];
j--;
}
}
a[i]=temp;
quicksort(a,start,i-1);
quicksort(a,i+1,end);
}
```
阅读全文