首頁 >後端開發 >php教程 >php如何實現原址排序數組使奇數位於偶數前面(代碼)

php如何實現原址排序數組使奇數位於偶數前面(代碼)

不言
不言原創
2018-09-17 16:28:472035瀏覽

這篇文章帶給大家的內容是關於php如何實現原址排序數組使奇數位於偶數前面(程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

1、遍歷數組,判斷元素奇數偶數,push進新數組,空間換時間

2、插入排序的想法            空間上為原址排序

#2.1從前往後遍歷,判斷目前的是奇數 

#2.2從目前的開始,從後往前遍歷,如果是偶數就往後一位移動 

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn