小根堆排序堆排序求助大佬!!!
/* 不知道怎么回事,就是得不到正确的结果,大根堆的可以 */ public static void smallHeapCreate(int [] arr){ for(int i=0;i<arr.length;i++){ while (arr[i]<arr[(i-1)/2]){ swap(arr,i,(i-1)/2); i=(i-1)/2; } } int size=arr.length; swap(arr,0,--size); for(int i=0;i<size;i++){ int index=0; int left=1; while (size>0){ int min=left+1 < size && arr[left] <arr[left+1] ? left:left+1; min=arr[index]<arr[min]?index:min; if(min==index)return; swap(arr,min,index); index=min; left=index*2+1; } swap(arr,index,--size); } } public static void swap(int [] arr,int i, int j){ arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ arr[j]; arr[i] = arr[i] ^ arr[j]; }
#堆排序小根堆##笔试题目#