Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die In-Place-Sortierung eines Arrays in PHP, sodass ungerade Zahlen vor geraden Zahlen stehen (Code)

So implementieren Sie die In-Place-Sortierung eines Arrays in PHP, sodass ungerade Zahlen vor geraden Zahlen stehen (Code)

不言
不言Original
2018-09-17 16:28:471999Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Implementierung der In-Place-Sortierung von Arrays, sodass ungerade Zahlen vor geraden Zahlen stehen (Code). Ich hoffe, es wird Ihnen hilfreich sein.

Geben Sie ein ganzzahliges Array ein und implementieren Sie eine Funktion, um die Reihenfolge der Zahlen im Array so anzupassen, dass sich alle ungeraden Zahlen in der ersten Hälfte des Arrays und alle geraden Zahlen in der zweiten Hälfte befinden des Arrays und stellen Sie sicher, dass ungerade Zahlen, ungerade Zahlen und gerade Zahlen vorhanden sind. Die relative Position zwischen geraden Zahlen bleibt unverändert.

1. Durchlaufen Sie das Array, bestimmen Sie, ob die Elemente ungerade oder gerade sind, schieben Sie sie in das neue Array und tauschen Sie Raum gegen Zeit aus

Die Idee von ​​Einfügesortierung ist räumliche In-Place-Sortierung

2.1 Von vorne nach hinten durchlaufen und feststellen, ob die aktuelle Zahl eine ungerade Zahl ist

2.2 Beginnen Sie mit der aktuellen Zahl und Von hinten nach vorne durchlaufen, zur nächsten Position wechseln

2.3 Aktuelle ungerade Einfügeposition

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);
rrree

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die In-Place-Sortierung eines Arrays in PHP, sodass ungerade Zahlen vor geraden Zahlen stehen (Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn