ホームページ  >  記事  >  バックエンド開発  >  PHP ソート アルゴリズムのレビューと概要_PHP チュートリアル

PHP ソート アルゴリズムのレビューと概要_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:20:59851ブラウズ

コードにジャンプするだけです。

コードをコピーします コードは次のとおりです:

/*
* 挿入ソート(1次元配列)
* 毎回、ソート対象のデータ要素が1つずつ挿入されます。以前にソート済み ソート対象のすべてのデータ要素が挿入されるまで、配列内の適切な位置が配列の順序を維持します。
*/
function insertSort($arr){
if(!is_array($arr) || count($arr)==0){
return $arr;
}
$count = count($arr); for($i=1; $i<$count; $i++){
if(isset($arr[$i])){
$tmp = $arr[$i]; // 次の値を取得します。 element
$j = $i - 1; //前の添え字を取得
while($arr[$j] > $tmp){ //前の添え字が最後の添え字より大きい場合は小さい順にtolarge
$arr[ $j+1] = $arr[$j]; // 適切な位置に移動するまで小さい要素を前の要素と入れ替えてから、次の要素を移動します
$arr[$j] = $tmp;
$j --;
}
}
}
return $arr;
* 選択ソート (1 次元配列)
* 各パスはデータから最小 (最大) の要素を選択しますソートされるすべてのデータ要素が配置されるまで、順序はソートされた配列の最後に配置されます。
*/
function selectSort($arr){
if(!is_array($arr) || count($arr) == 0)
{
return $arr
}
$count = count($arr);
for($i=0; $i$k = $i;
for($j=$i+1; $j if ($ arr[$k] > $arr[$j])
$k = $j; // 最小値を求める
if ($k != $i){
$tmp = $arr[$i]; arr[$i] = $arr[$k];
$arr[$k] = $tmp; }
}
}
}
return $arr;
/*
* バブルソート(一次元) array )
* ペアごとにソートするデータ要素のサイズを比較し、2 つのデータ要素の順序が逆転していることが判明した場合は、逆転したデータ要素がなくなるまで交換します。 ){
$count = count( $array);
if ($count return false;
}
for($ifor( $j=$count-1; $j>$i; $j--){
if ($array[$j] < $array[$j-1]){ // 見つかった数値を比較します
$tmp = $array[$j
* クイックソート (1 次元配列)
*
*/
function QuickSort($array){
if (count($array) <= 1){
return $array;
}
$key = $array[0 ];
$left_arr = array();
$i=1; $i $left_arr[] = $array[$i]
}else{
$right_arr[] = $array[$i]
}
}
; $left_arr = クイックソート($left_arr);
$right_arr = クイックソート($right_arr);
return array_merge($left_arr, array($key), $right_arr);
/**
* 要素の値でソートします
* strOrder は、asc 昇順 desc 降順のソート順です
*/
関数 sortByVal ($arr,$strOrder='asc' )
{
if(!is_array($arr) || count($arr)==0)
{
return $arr;
}
$arrReturn = array();
foreach($arr as $key=> ;$val)
{
$arrKey[] = $key;
$arrVal[] = $val;
}
$count = count($arrVal); count)
{
//キーの連続配列を作成
for($key=0;$key<$count;$key++)
{
$arrKeyMap[$key] = $key
}
//値を並べ替えます
for($i=0;$ i<$count;$i++)
{
for($j = $count-1; $j>$i;$j--)
{
//<アレンジここを変更します
$bol = $strOrder == 'asc' ? $arrVal[$j]<$arrVal[$j-1] : $arrVal[$j]>$arrVal[ $j-1];
if($bol){
$tmp = $arrVal[$j] = $arrVal[$j-1]; = $tmp;
//値のバブルソート、キー配列の相互作用を引き起こす
$arrKeyMap[$j] = $arrKeyMap[$j-1]; j-1] = $keytmp;
}
}
}
if(count($arrKeyMap))
{
foreach ($val としての $arrKeyMap)
{
$arrReturn[] = $arrKey[$val];
}
return $arrReturn;
}
}
/**
* ネイティブ関数を使用して配列を値で配置します
*/
function arraySortByVal($arr,$keys,$type='asc'){
$keysvalue = $new_array = array();
foreach ($arr as $k=> $v){
$keysvalue[$k] = $v[$keys]
}
if($type == 'asc'){
asort($keysvalue); ;
}else{
arsort($keysvalue) ;
reset($keysvalue)
$new_array[$k] = $arr[$k] ;
}
$new_array を返します


配列値をソートする次の 2 つの方法では、1 つは独自に実装され、もう 1 つはネイティブ PHP 関数を使用します。実際、少量のデータ (一般的には 1 ページのデータ) についてはソートが可能です。大量のデータをソートする場合は、MYSQL の基本クラスに統合することをお勧めします。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/324976.html技術記事コードにジャンプするだけです。 コードをコピーする コードは次のとおりです: ?php /* * 挿入ソート (1 次元配列) * 毎回ソートする 1 つのデータ要素を、以前にソートされた配列の適切な位置に挿入します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。