ホームページ  >  記事  >  バックエンド開発  >  奇数が偶数の前になるように PHP で配列のインプレース ソートを実装する方法 (コード)

奇数が偶数の前になるように PHP で配列のインプレース ソートを実装する方法 (コード)

不言
不言オリジナル
2018-09-17 16:28:472005ブラウズ

この記事の内容は、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。