ホームページ バックエンド開発 PHPチュートリアル PHP ヒープソートの実装原理とアプリケーションコード_PHP チュートリアル

PHP ヒープソートの実装原理とアプリケーションコード_PHP チュートリアル

Jul 20, 2016 am 11:08 AM
php そして コード 原理 ヒープ 成し遂げる アプリ 選別 チュートリアル

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つの値を交換する

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444907.html技術記事 PHP チュートリアル ヒープ ソートの実装原理とアプリケーション コード 著者: lajabs 電子メール: agl0dhlvqgdtywlslmnvbq== この記事では、プログラムを読みやすくするために、記述言語として PHP を使用してヒープ ソートの原理を詳細に説明します...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

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

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

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

See all articles