Логика пузырьковой сортировки - PullRequest
0 голосов
/ 09 мая 2020

Обмен логами c в приведенном ниже коде не является конструктивным. Одно значение внутри массива фиксируется, которое сравнивается с другим массивом. Если найдено больше, массивы меняются местами.

<?php   
$a=array(13,12,11,10,9,8,7); /* array initialised */ 
$length=count($a);           /* To Count the length of the array */
for($i=0;$i<=$length;$i++){  /* Loop to hold the first index of the number */ 

    $temp=$a[$i];            /* To store the number the  first value of the array on variable */

    for($j=1;$j<=$length;$j++){  /* Second loop to check all the remaining values */

            if($a[$i]>$a[$j]){   /* condtion to check if the first index number is larger than others */

                $temp1=$a[$i];  
                $a[$i]=$a[$j];  /* swapping of numbers with postions */
                $a[$j]=$temp1;  /* swapping of numbers with postions */
            }
            break;              /* To exit the nested loop */ 

    }

}
?>  

1 Ответ

2 голосов
/ 09 мая 2020

Похоже, вы пытаетесь реализовать алгоритм пузырьковой сортировки.

Вот правильное решение:

$arr=array(13,12,11,10,9,8,7);

$n = sizeof($arr);

// Traverse through all array elements
for($i = 0; $i < $n; $i++)
{
    // Last i elements are already in place
    for ($j = 0; $j < $n - $i - 1; $j++)
    {
        // traverse the array from 0 to n-i-1
        // Swap if the element found is greater
        // than the next element
        if ($arr[$j] > $arr[$j+1])
        {
            $t = $arr[$j];
            $arr[$j] = $arr[$j+1];
            $arr[$j+1] = $t;
        }
    }
}

вывод:

Array
(
    [0] => 7
    [1] => 8
    [2] => 9
    [3] => 10
    [4] => 11
    [5] => 12
    [6] => 13
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...