輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 1.遍曆數組,判斷元素奇數偶數,push進新數組,空間換時間 2.插入排序的思想 空間上是原址排序 2.1從前往後遍歷,判斷當前的... ...
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 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) }