php堆排序实现原理与应用方法
本篇章节讲解php堆排序实现原理与应用方法。分享给大家供大家参考。具体分析如下: 这里以php作为描述语言较详细讲解堆排序原理,因保证程序可读性,故不做优化,php程序中关于堆的一些概念如下: 假设n为当前数组的key则,n的父节点为 n>>1 或者 n/2(整除);n的左子节点l= n<<1 或 l=n*2,n的右子节点r=(n<<1)+1 或 r=l+1 $arr=array(1,8,7,2,3,4,6,5,9); 数组$arr的原形态结构如下: 1 / 8 7 / / 2 3 4 6 / 5 9 heapsort($arr);print_r($arr); 排序后生成标准的小顶堆结构如下: 1 / 2 3 / / 4 5 6 7 / 8 9 既数组:array(1,9): 代码如下: >1;
//整理成大顶堆,最大的数整到堆顶,并将最大数和堆尾交换,并在之后的计算中忽略数组后端的最大数(last),直到堆顶(last=堆顶) //整理当前树节点($n),临界点$last之后为已排序好的元素 //如果右孩子比左孩子大,则让父节点的右孩子比 //交换两个值 希望本文所述对大家的php程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |