java实现堆排序

来源:互联网 发布:js 空格换成换行符 编辑:程序博客网 时间:2024/06/07 00:08

1.堆排序的的实现,分为大顶堆和小顶堆,大顶堆就是,把子节点和父节点中,大的值,替换在父节点中,这样会导致根节点中的值是最大的值,再把根中的值和最后一位进行替换,然后再把指针往前移一位,小顶堆的原理,也是差不多,就是把最小的值替换在根中,再把根中元素和最后一位进行替换

实现如下

public static void heapSort(int[] array){for(int i=0;i<array.length;i++){//array.length为什么减1,因为角标从0开始jianDui(array,array.length-1-i);replace(array,0,array.length-1-i);}}


//利用一维数组进行建堆

public static void jianDui(int[] array,int len){//(len-1)/2是在取父节点for(int i=(len-1)/2;i>=0;i--){int k=i;//记录父节点while(k*2+1<=len){//判断是否有左子节点int leftNode = k*2+1;//记录左子节点if(leftNode<len){if(array[leftNode]<array[leftNode+1]){leftNode++;}}if(array[leftNode]>array[k]){replace(array,k,leftNode);k=leftNode;}else{break;}}}}

public static void replace(int[] array,int k,int len){int temp=array[k];array[k]=array[len];array[len]=temp;}


0 0
原创粉丝点击