介绍
小编给大家分享一下PHP中堆排序的原理是什么,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!
maxHeapify(数组、索引heapSize)//最大堆调整 iMax, iLeft iRight 而真正的 iMax=指数;iLeft=2 *指数+ 1;iRight=2 *指数+ 2 如果根结点小于左右子树里结点值,就交换一下这两个值 利用第三方变量,交换下两个值 buildMaxHeap(数组)//创建最大堆,把一个数组调整成最大堆的数组 iParent地板=((号)/2) 因为我=iParent; i>=0,我—— maxHeapify(数组、我、大小) 排序(arr) buildMaxHeap(数组,heapSize);//创建最大的堆 for (int i=heapSize - 1;我在;0;我(){ 交换(数组,0,我);//交换第一个和最后一个 maxHeapify(数组,0,i);//维护最大堆,尺寸小了一个
//交换元素 函数交换(,arr美元,一美元,美元b) { temp=arr美元(美元); arr[美元]=arr美元[b]美元; arr [b]美元=temp美元; }//排序的入口函数 函数堆排序(及美元arr) { 美元$ heapSize=count (arr); buildMaxHeap (arr, heapSize美元);//创建最大的堆 (i=heapSize - 1美元;我比美元;0;我——美元){ arr交换($ 0 $ i);//交换第一个和最后一个 arr maxHeapify ($ 0 $ i);//维护最大堆,尺寸小了一个 } }//创建最大堆的函数 函数buildMaxHeap (heapSize美元及美元arr) { $ iParent=地板((heapSize-1美元)/2);//根据最后一个元素的索引值计算该结点根结点的索引是哪个 (我=$ iParent; i>美元=0;我——美元){//这个循环是循环的所有根结点 maxHeapify(加勒比海盗,我,美元heapSize美元);//维护最大的堆 } }//维护最大的堆 函数maxHeapify (, arr美元,美元指数,heapSize美元){ iMax=0; iLeft=0;美元美元iRight=0; 而(真){ iMax=美元指数; iLeft=2 * iMax + 1美元; iRight=2 * iMax + 2美元; 如果(iLeft看完了这篇文章,相信你对PHP中堆排序的原理是什么有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
PHP中堆排序的原理是什么