Maison  >  Article  >  développement back-end  >  Comment implémenter le tri sur place d'un tableau en PHP afin que les nombres impairs soient devant les nombres pairs (code)

Comment implémenter le tri sur place d'un tableau en PHP afin que les nombres impairs soient devant les nombres pairs (code)

不言
不言original
2018-09-17 16:28:471999parcourir

Le contenu de cet article explique comment implémenter le tri sur place des tableaux en PHP afin que les nombres impairs soient devant les nombres pairs (code). Les amis dans le besoin peuvent s'y référer. j'espère que cela vous sera utile.

Saisissez un tableau d'entiers, implémentez une fonction pour ajuster l'ordre des nombres dans le tableau, de sorte que tous les nombres impairs soient situés dans la première moitié du tableau et que tous les nombres pairs soient situés dans la seconde moitié. du tableau et assurez-vous que les nombres impairs, impairs et pairs sont. La position relative entre les nombres pairs reste inchangée.

1. Parcourez le tableau, déterminez si les éléments sont pairs ou impairs, poussez dans le nouveau tableau et échangez de l'espace contre du temps

2. ​le tri par insertion est un tri spatial sur place

2.1 Parcourez d'avant en arrière et déterminez si le nombre actuel est un nombre impair

2.2 Commencez à partir du numéro actuel et parcourir d'arrière en avant. S'il s'agit d'un nombre pair, avancer d'un chiffre

2.3 Position d'insertion impaire actuelle

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)
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn