ホームページ >バックエンド開発 >PHPチュートリアル >PHP 連想配列ソート (クイックソート)_PHP チュートリアル

PHP 連想配列ソート (クイックソート)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:54:251248ブラウズ


使用環境と条件
PHP の連想配列に次の配列データがある状況があります:
[php]
$array = 配列 (
配列 (
'名前' => "シャオ"、
「年齢」 => 3
)、
配列 (
'名前' => '王'、
「年齢」 => 1 )、
配列 (
'名前' => 'チェン'、
「年齢」 => 2 )
);
PHP の組み込み関数では、age フィールドに対して配列をソートする必要がありますが、どのような種類のソートであっても、明らかにニーズを満たすことができないため、要件をすばやく達成するために自分で簡単なソート コードを作成できます

状況に注意してください

PHP にはポインターがないため、参照渡しする場合は、C コードのようにクイックソート (int *A、int begin、int end) を直接記述することはできず、代わりに PHP の & 演算子 Pass を使用する必要があります。配列のアドレスをクイックソート関数に渡すことで、php

で値ではなく参照によって渡すことができます

クイックソートコード
[php]

QuickSortProcess ( $array, 0, count ( $array ) - 1 ); print_r ( $array );

/**
* 説明: クイックソートでピボットポイントの位置を取得します
​*/
function QuickPartition(&$array, $left, $right) {
// 1. ベースライン定義
$stand = $array [$left];
// 2. $left == $right まで区間の両端から中間までスキャンします
While ( $left while ( $left < $right && $array [$right] ['age'] >= $stand ['age'] ) {
$right --; }
If ($left $array [$left ++] = $array [$right]
}

While ( $left < $right && $array [$left] ['age'] <= $stand ['age'] ) {
$left ++; }
If ($left $array [$right --] = $array [$left]; }
}

// 3. ピボットポイントの位置を取得します
$array [$left] = $stand
$left を返します。 }

/**
* 説明: クイックソートメイン処理関数
​*/
function QuickSortProcess(&$array, $begin, $end) {
// 1. 変数の定義
$pivot = NULL // ピボットポイント
;
If ($begin < $end) {
$pivot = QuickPartition ( $array, $begin, $end ); QuickSortProcess ( $array, $begin, $pivot - 1 ); QuickSortProcess ( $array, $pivot + 1, $end ); }
}

このクイック ソートを自分のプロジェクトで使用しましたが、とても満足しました。10 月 1 日の休暇中に AC クイック ソートの C コードに N 日間費やしたことは無駄ではありませんでした。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477946.html技術記事 phpの連想配列は、配列データが以下のような場合、使用環境や条件によって状況があります。 [php] $array = array ( array ( name = xiao, age = 3 ), array ( name =...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。