PHP ヒープソートの実装原理とアプリケーションコード_PHP チュートリアル
Jul 20, 2016 am 11:08 AM
phpチュートリアル ヒープソートの実装原理とアプリケーションコード
author: lajabs
email: agl0dhlvqgdtywlslmnvbq==
この記事では、記述言語としてPHPを使用してヒープソートの原理をより詳しく説明しています
プログラムの読みやすさを確保するために、いいえ最適化が完了しました。
PHP プログラムのヒープに関するいくつかの概念:
n が現在の配列のキーであると仮定すると、
n の親ノードは n>>1 または n/2 (割り切れる) です。
n のノードは l= n*/
$arr=array(1) ,8,7,2,3,4 ,6,5,9);
/*
配列 $arr の元の構造は次のとおりです。 3 4 6
/
5 9
*/
ヒープ チュートリアルort( $arr);
print_r($arr);
/*
4 5 6 7
/
8 9
は配列です:array(1 ,2,3,4,5,6,7,8,9)
*/
function heapsort(&$arr)
{
$arr[0]
arr
// 大きな上部ヒープに配置し、最大の数値をヒープの先頭に移動し、最大数値をヒープの末尾と交換し、後続の計算では配列の後端の最大数値 (最後) を無視します。ヒープの先頭まで (last = ヒープの先頭)
//Mo。ノード ポインタを取得し、すべての非リーフ ノードを走査します
}
// i が 1 の場合、各ヒープソートが最大数を取得することを意味します(heap Top, $ arr [1])、ルート ノードでヒープを繰り返します
swap ($ arr [$ last], $ arr [1]); ヒープをソートするときに配列の後ろにあるソートされた要素が再び中断されるのを避けるため️
//クリティカルポイント $last の後の現在のツリーノード ($n) を整理します
functionAdjustnode($n,$last,&$arr)
{
位置
if (! Isset ( $ arr [$ l]) || $ l & gt; $ last) Return; $ r = $ l+1; $ n 子が大きい場合は、親ノードの右側の子を大きくします。 than
if($r<=$last&&$arr[$r]>$arr[$l]) $l=$r;
//子ノード $l の場合 If ($arr[$l]> $arr[$n]) が親ノード $n より大きい場合、親ノード $n と交換します。 If($arr[$l]>$arr[$n])
n) 値交換
スワップ( $arr[$l],$arr[$n]); $l)の子ノードの値なので、アトミックノード($l)の子ノードを調整し、再帰を使用して実装する必要があります
AductNode($ l、$ last、$ arr); '' sの使用を使用する - - - - - - 2つの値を交換する

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
