友人が仕事を探しているときにテストの問題に遭遇しました。メモしてください。
今後遭遇する可能性が非常に高いです。
問題: PHP は配列のソートに組み込み関数を使用しません。降順または昇順になる可能性があります
最初の方法: 伝説のバブリングメソッド
コードをコピーします コードは次のとおりです:
function arraysort($data, $order = 'asc') {
//asc 昇順 降順
$temp = array ();
$count = count ($data); )
return false; //間違ったデータを受信
if ($order == 'asc') {
for($i = 0; $i for($j = $ count - 1; $j > ; $i; $j --) {
if ($data [$j] < $data [$j - 1]) {
//2 つのデータの位置を交換します
$temp = $data [$j] ;
$data [$j] = $data [$j - 1] = $temp; ($i = 0; $ i < $count; $i ++) {
for($j = $count - 1; $j > $i; $j --) {
if ($data [$ j] > $data [ $j - 1]) {
$temp = $data [$j] = $data [$j - 1]; ] = $temp;
}
}
}
}
return $data;
$data = 配列 (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12 , 34, 54, 66, 32 );
var_dump ( arraysort ( $data ) ); // 昇順
echo ('
'); 'desc') );// 降順
2番目のメソッド: 何と呼んでいいのかわからないので、挿入メソッドと呼びましょう!囧
コードをコピーします
コードは次のとおりです:
function arraysort3($data, $order = 'asc') {
//現在は昇順のみを実行しています
$count = count ($data) ;
for( $i = 1; $i $temp = $data [$i]
$j = $i - 1; ] > $ temp ) { $data [$j + 1] = $data [$j]; $data [$j] = $temp;//なぜ減らすべきか:上位ビットをビットごとに} }
return $data;
$data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33 , 1, 12, 34, 54 , 66, 32 );
var_dump ( arraysort3 ( $data ) );
http://www.bkjia.com/PHPjc/321147.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/321147.html
技術記事
友人が仕事を探しているときにテストの問題に遭遇しました。メモしてください。 今後も遭遇する可能性が非常に高いです。 質問: PHP は配列の並べ替えに組み込み関数を使用しません。降順または昇順にすることができます。最初の方法は...
です。