ホームページ >バックエンド開発 >PHPチュートリアル >奇数が偶数の前になるように PHP で配列のインプレース ソートを実装する方法 (コード)
この記事の内容は、PHP で配列のインプレース ソートを奇数が偶数の前になるように実装する方法 (コード) についてです。一定の参考値があり、困っている友人はそれを参照できます。お役に立てば幸いです。
整数配列を入力し、すべての奇数が配列の前半に配置され、すべての偶数が後半に配置されるように、配列内の数値の順序を調整する関数を実装します。配列の相対位置が変化しないことを確認し、奇数、奇数、偶数が同じであることを確認します。
1. 配列を走査し、要素が奇数か偶数かを判断し、新しい配列にプッシュし、空間を時間と交換します。
2. という考え方挿入ソートは空間的にインプレースソートです
2.1 前から後ろにトラバースして、現在の数値が奇数かどうかを確認します。
2.2 現在の数値から開始します。偶数の場合は 1 桁前に移動します
2.3 現在の奇数の挿入位置
for i=1;i<arr.length;i++ target=arr[i] if arr[i]%2==1 j=i-1 while j>=0&&arr[j]%2==0 arr[j+1]=arr[j] j-- arr[j+1]=target
<?php $arr=array(1,2,3,4,5,6,7,8,9,10); function reOrderArray($arr){ $length=count($arr); //从前往后遍历 for($i=1;$i<$length;$i++){ //判断当前元素是奇数 $target=$arr[$i]; if($target%2==1){ //从后往前遍历,如果有偶数就往后移动一位 $j=$i-1; while($j>=0 && $arr[$j]%2==0){ $arr[$j+1]=$arr[$j]; $j--; } //把奇数插入位置 $arr[$j+1]=$target; } } return $arr; } $arr2=reOrderArray($arr); var_dump($arr2);
array(10) { [0]=> int(1) [1]=> int(3) [2]=> int(5) [3]=> int(7) [4]=> int(9) [5]=> int(2) [6]=> int(4) [7]=> int(6) [8]=> int(8) [9]=> int(10) }
以上が奇数が偶数の前になるように PHP で配列のインプレース ソートを実装する方法 (コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。