调整虚拟机参数之后依旧有溢出的情况
来源:1-6 第一版快速排序法的问题
Star3327752
2022-08-08 21:22:47


1回答
Star3327752
提问者
2022-08-08
package 归并排序;
public class QuickSort {
//传入一个数组,自动进行快速排序
public static void QuickSort(int arr[]){
QuickSort(arr,0,arr.length);
}
//快速排序本体
private static void QuickSort(int arr[],int l,int r){
if (l>=r)
return;
int mid=Partition(arr,l,r);
QuickSort(arr,l,mid-1);
QuickSort(arr,mid+1,r);
}
//快速排序的配套partition方法
//主要作用就是定义第一个元素为中间元素,然后找出所有比它小和比它大的元素
//那么第一步就是需要遍历一遍所有的元素
private static int Partition(int arr[],int l,int r){
int j=l;
for (int i=l+1;i<arr.length;i++){
if (arr[i]<=arr[l]){
j++;
swap(arr,j,i);
}
if (arr[i]>arr[l]){
//啥也不干
}
}
swap(arr,j,l);
return j;
}
//配套swap方法
private static void swap(int arr[],int a,int b){
int t=arr[a];
arr[a]=arr[b];
arr[b]=t;
}
public static void main(String[] args) {
//测试swap方法------>验证通过
int arr[]={8,2,3,4,5,6,7,8};
swap(arr,0,2);
for (int n:arr)
System.out.print(n+" ");
System.out.println("\n===============");
//测试partition方法-------->验证通过
int arr2[]={4,6,5,2,3,8,7,1};
// Partition(arr2,0,arr.length);
// for (int n:arr2)
// System.out.print(n+" ");
//测试QuickSort方法
QuickSort(arr2);
for (int n:arr2)
System.out.print(n+" ");
QuickSort(arr);
for (int n:arr){
System.out.print(n+" ");
}
}
}经过测试,有一部分数组不会出现溢出的情况,正常进行排序。比如
int arr2[]={4,6,5,2,3,8,7,1};但是有一部分数组会出现溢出的情况,比如
int arr[]={8,2,3,4,5,6,7,8};相似问题