クイックソート;phpでsortを実現して文字列のソートを行う
2546 ワード
PHP関数にはsort関数があり,配列の並べ替えを行う.
文字列が必要な場合はimplode(array()で配列を文字列に変換して出力します
ここには普通の関数が来る時sortの実現の構想があります
9621が順次出力されます
もう一つの迅速なソートの考え方は
sort()デフォルトのソート[A-Z]は、小さいときから大きいときまで
sort($array,[sort_flags])
2つのパラメータがあります
1つのパラメータはソートする配列です.
2つ目は、次の値でソートを変更できる動作です.
ソート・タイプのタグ:
戻り値bool
サンプルコード
ブレンドタイプの値を含む配列をソートするときは注意してください.
sort()は予知できない結果を生じる可能性がある
文字列が必要な場合はimplode(array()で配列を文字列に変換して出力します
ここには普通の関数が来る時sortの実現の構想があります
1){
$k=$str[0];
$x=array();
$y=array();
$_size=count($str);
for($i=1;$i$k){
$y[]=$str[$i];
}
}
$x=show($x);
$y=show($y);
return array_merge($x,array($k),$y);
}else{
return $str;
}
}
$a=9621;
$arr=str_split($a,1);
$arr1=show($arr);
$arr2=implode($arr1);
echo $arr2;
9621が順次出力されます
もう一つの迅速なソートの考え方は
function myQuickSort(&$arr){
// , 1
if(count($arr)>1){
//
$key = $arr[0];
$left = array();
$right = array();
$len = count($arr);
$i=1;
$j=$len-1;
$bank = $len%2;
// ,
// ,
if($bank==1){
// , x
for($x = 0;$x=$key){
$right[] = $arr[$i];
$i++;
}
else{
$left[] = $arr[$i];
$i++;
}
}
}else{
for($x=0;$x=$key){
$right[] = $arr[$i];
$i++;
}
else{
$left[] = $arr[$i];
$i++;
}
//$left = array_pop($left);
}
}
}else{
return $arr;
}
// ,
$left = myQuickSort($left);
$right = myQuickSort($right);
// ,
return array_merge($left,array($key),$right);
}
またはsortで文字列と配列を互いに変換するsort()デフォルトのソート[A-Z]は、小さいときから大きいときまで
sort($array,[sort_flags])
2つのパラメータがあります
1つのパラメータはソートする配列です.
2つ目は、次の値でソートを変更できる動作です.
ソート・タイプのタグ:
SORT_REGULAR
-通常比較ユニット(タイプを変更しない)SORT_NUMERIC
-ユニットは数字としてを比較する.SORT_STRING
-ユニットは文字列としてを比較する.SORT_LOCALE_STRING
-現在の領域(locale)設定に基づいてセルを文字列として比較し、setlocale()で変更できます. SORT_NATURAL
-natsort()と同様に、各ユニットを「自然な順序」で文字列をソートします.PHP 5.4.0に追加されました. SORT_FLAG_CASE
-SORT_STRING
またはSORT_NATURAL
とマージ(ORビット演算)することができ、大文字と小文字のソート文字列を区別しない. 戻り値bool
サンプルコード
$val) {
echo "fruits[" . $key . "] = " . $val . "
";
}
?>
:
fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange
ブレンドタイプの値を含む配列をソートするときは注意してください.
sort()は予知できない結果を生じる可能性がある