问题遇到的现象和发生背景
java语言中写的堆排序代码
用代码块功能插入代码,请勿粘贴截图
public class sort {
public static void main(String[] args){
int []arr={30,1001,23,96,78,37,45,66,99,100,1000,1};
print(arr);
sort(arr,arr.length);
print(arr);
}
public static void print(int []arr){//打印数组
if(arr==null || arr.length<1) return ;
for(int i: arr) System.out.print(i+" ");
System.out.println();
}
public static void sort(int arr[],int n){//堆排序
for(int i=n/2-1;i>=0;i--)
adjustSort(arr,i,n);
for(int i=n-1;i>0;i--)
{
int temp=arr[0];
arr[0]=arr[i];
arr[i]=temp;
adjustSort(arr,0,i);
}
}
public static void adjustSort(int arr[],int k,int n){
int temp=arr[k];
for(int i=2*k+1;i<n;i=2*i+1)
{
if(i+1<n && arr[i]<arr[i+1]) {i++;}
// if(arr[i]<arr[i+1] && i+1<n) i++;
if(arr[i]>temp) {arr[k]=arr[i]; k=i;}
else break;
}
arr[k]=temp;
// print(arr);
}
运行结果及报错内容
在adjustSort函数中,第一个if语句执行正确,注释掉的报溢出错
我的解答思路和尝试过的方法
待解决,求
评论