/*
不知道怎么回事,就是得不到正确的结果,大根堆的可以
*/
public static void smallHeapCreate(int [] arr){
for(int i=0;i
while (arr[i]
swap(arr,i,(i-1)/2);
i=(i-1)/2;
}
}
int size=arr.length;
swap(arr,0,--size);
for(int i=0;i
int index=0;
int left=1;
while (size>0){
int min=left+1
min=arr[index]
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];
}