索引 16 超出长度 16 的范围
Index 16 out of bounds for length 16
我正在尝试使用快速排序对 x 元素数组进行排序,但出现错误“索引 16 超出长度 16 的范围”,请帮忙。
public class quickSort {
static int partition(int []arr, int lo, int hi){
int pivot=arr[lo];
while(lo<hi){
while(pivot<arr[hi] && lo<hi)
hi = hi - 1;
if (hi != lo) {
arr[lo] = arr[hi];
lo = lo + 1;
}
while(arr[lo]<pivot && lo<hi)
lo =lo+1;
if(hi!=lo){
arr[hi]=arr[lo];
hi =hi-1;
}
}
arr[hi] =pivot;
int pivotPoint = partition(arr,lo,hi);
return pivotPoint;
}
static void quickSort(int[] arr, int lo, int hi){
int pivotPoint =partition(arr,lo,hi);
if(lo<pivotPoint){
quickSort(arr,lo,pivotPoint-1);
}
if(lo<pivotPoint){
quickSort(arr,pivotPoint+1,hi);
}
}
static void Sort(int[] arr, int n){
quickSort(arr,1,n);
}
public static void main(String[] args) {
int[] random ={16,9,8,10,11,12,13,14,15,16,2,3,6,7,4,5};
Sort(random,random.length);
System.out.println();
}
}
对于 16 个元素的数组,索引为 0 到 15。
因此索引 16 不是数组的一部分,您会得到 OutOfBoundsException。
我正在尝试使用快速排序对 x 元素数组进行排序,但出现错误“索引 16 超出长度 16 的范围”,请帮忙。
public class quickSort {
static int partition(int []arr, int lo, int hi){
int pivot=arr[lo];
while(lo<hi){
while(pivot<arr[hi] && lo<hi)
hi = hi - 1;
if (hi != lo) {
arr[lo] = arr[hi];
lo = lo + 1;
}
while(arr[lo]<pivot && lo<hi)
lo =lo+1;
if(hi!=lo){
arr[hi]=arr[lo];
hi =hi-1;
}
}
arr[hi] =pivot;
int pivotPoint = partition(arr,lo,hi);
return pivotPoint;
}
static void quickSort(int[] arr, int lo, int hi){
int pivotPoint =partition(arr,lo,hi);
if(lo<pivotPoint){
quickSort(arr,lo,pivotPoint-1);
}
if(lo<pivotPoint){
quickSort(arr,pivotPoint+1,hi);
}
}
static void Sort(int[] arr, int n){
quickSort(arr,1,n);
}
public static void main(String[] args) {
int[] random ={16,9,8,10,11,12,13,14,15,16,2,3,6,7,4,5};
Sort(random,random.length);
System.out.println();
}
}
对于 16 个元素的数组,索引为 0 到 15。 因此索引 16 不是数组的一部分,您会得到 OutOfBoundsException。