Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie PHP, um den Mindestwert nach dem Rotieren eines geordneten Arrays (Code) zu finden

So implementieren Sie PHP, um den Mindestwert nach dem Rotieren eines geordneten Arrays (Code) zu finden

不言
不言Original
2018-09-17 16:24:521631Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Ermittlung des Mindestwerts (Code) nach dem Rotieren eines geordneten Arrays. Ich hoffe, dass er für Sie hilfreich ist.

Das Verschieben der ersten Elemente eines Arrays an das Ende des Arrays wird als Rotation des Arrays bezeichnet. Gibt eine Drehung eines nicht absteigend sortierten Arrays ein und gibt das kleinste Element des gedrehten Arrays aus. Beispielsweise ist das Array {3,4,5,1,2} eine Rotation von {1,2,3,4,5} und der Mindestwert des Arrays ist 1.

HINWEIS: Alle angegebenen Elemente sind größer als 0. Wenn die Array-Größe 0 ist, geben Sie bitte 0 zurück.

1. Verwenden Sie die Dichotomiemethode, um das kleinste Element im Array zu finden

2. Definieren Sie zwei Zeiger links und rechts, die auf das erste und das letzte Element zeigen Definieren Sie im Array einen mittleren Zeiger in der Mitte

3. Wenn arr[left] kleiner als arr[mid] ist, bewegen Sie den linken Zeiger auf die Mitte, und die Mitte wird neu berechnet 4. Wenn arr[left] größer als arr[mid] ist, bewegen Sie den rechten Zeiger auf die Mitte. Die Mitte wird neu berechnet und der Bereich wird reduziert

left=0 right=arr.length-1
while arr[left]>=arr[right]
    if right-left==1
        mid=right
        break
    mid=left+(right-left)/2
    if arr[left]<=arr[mid]
        left=mid
    else
        right=mid
return arr[mid]
<?php
$arr=array(3,4,5,6,1,2);
function minNumberInRotateArray($rotateArray){
        $left=0;//左边指针
        $right=count($rotateArray)-1;//右边指针
        //判断条件,left大于right就一直进行
        while($rotateArray[$left]>=$rotateArray[$right]){
                //left和right已经紧挨着了
                if(($right-$left)==1){
                        $mid=$right;
                        break;
                }   
                //中间点
                $mid=ceil($left+($right-$left)/2);
                //left小于中间点
                if($rotateArray[$left]<$rotateArray[$mid]){
                        //left移动到中间点
                        $left=$mid;
                }else{
                        //right移动到中间点
                        $right=$mid;
                }   
        }   
    
        return $rotateArray[$mid];
}
$min=minNumberInRotateArray($arr);
var_dump($min);//int(1)

Das obige ist der detaillierte Inhalt vonSo implementieren Sie PHP, um den Mindestwert nach dem Rotieren eines geordneten Arrays (Code) zu finden. 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

In Verbindung stehende Artikel

Mehr sehen