读书人

一个快速排序的小程序求解异常

发布时间: 2012-08-31 12:55:03 作者: rapoo

一个快速排序的小程序,求解错误!
看了书上的快速排序后自己就试着编写了一个小程序,编译的时候没查出错误来,求能人看下错在哪里啊!

public class TestArray {
public static void main(String[] args) {
int[] arr = {23, 34, 5, 98, 20, 7, 200};
quickSort(arr, 0, arr.length-1);
for(int i = 0; i <arr.length; i++)
System.out.print(arr[i]+" ");
}

public static int partition(int[] arr, int low, int high) {
int qivotkey = arr[low];

while(low < high) {
while(low < high && arr[high] >= qivotkey) high--;
arr[low] = arr[high];
while(low < high && arr[low] <=qivotkey) low++;



arr[high] = arr[low];
}
arr[low] = qivotkey;
return low;
}

public static void quickSort(int[] arr, int low, int high) {
if(low < high) {
int qivotloc = partition(arr, low, high);
quickSort(arr, low, qivotloc-1);
quickSort(arr, qivotloc+1, high);
}
}
}

[解决办法]

Java code
while(low < high) {  while(low < high && arr[high] >= qivotkey) high--;  arr[low] = arr[high];  // 这句有问题  while(low < high && arr[low] <=qivotkey) low++;  arr[high] = arr[low];  // 这句也是,楼主并没有交换a[low]和a[high]的值} 

读书人网 >J2SE开发

热点推荐