介绍
这篇文章给大家介绍最小二叉树堆排序怎么利用java实现,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
最小二叉堆定义:,
二叉堆是完全二元树或者是近似完全二元树,最小二叉堆是父结点的键值总是小于或等于任何一个子节点的键值的堆堆。
<强>存储:
强>
二叉堆一般用数组来表示。
根节点在数组中的位置是0,第n个位置的子节点分别在2 n + 1和2 n + 2,
位置k的叶子的父节点位置为(k - 1)/2,
实现:
/* * * @description元素添加到末尾,和它的父节点比,如果比它小就交换 * @param数组 * * @author LynnWong */私人int [] getMinBinaryHeap (int[]数组){ int N=array.length; int minBinaryHeap []=new int [N]; int根;//根的值 int heapSize=0;//记录插入位置 (int num:数组){ minBinaryHeap [heapSize]=num; + + heapSize; int指针=heapSize-1;//当前指向的数组元素位置 而(指针!=0){ int leafPointer=指针;//叶子节点位置 指针=(pointer-1)/2;//根节点位置 根=minBinaryHeap(指针);//根节点 如果(num>=minBinaryHeap(指针)){//永远把当前数组元素看成叶子与其根比较或者换位 打破; }//如果根比叶子大就交换位置 minBinaryHeap(指针)=num; minBinaryHeap [leafPointer]=根; } } 返回minBinaryHeap; }
/* * * *用随机数测试二叉堆排序 *测试10遍,强迫症似的变态…… */公共空间text () { (int i=0; i<10;我+ +){ 随机rnd=new随机(); int[]拉拉={rnd.nextInt (6), rnd.nextInt (6), rnd.nextInt (6), rnd.nextInt (6), rnd.nextInt (6), rnd.nextInt (6)}; System.out.print(“输入:“); (int,拉拉){ System.out.print (a +“;“); } System.out.println (); int[]数组=this.getMinBinaryHeap(拉拉); System.out.print(“输出:“); (int:数组){ System.out.print (a +“;“); } System.out.println (); } }
关于最小二叉树堆排序怎么利用java实现就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。