Алгоритм
for k from 2 to n
key = a[k]
j = k - 1
while (j > 0 and key > a[j])
a[j + 1] = a[j]
j = j - 1
end while
a[j + 1] = key
end for
мой код:
function insertionSort(array $array) {
$length=count($array);
for ($i=1;$i<$length;$i++) {
$element=$array[$i];
$j=$i-1;
while($j>0 && $array[$j]>$element) {
$array[$j+1]=$array[$j];
$j=$j-1;
}
$array[$j+1]=$element;
}
return $array;
}
выход:
Array (
[0] => 5
[1] => 6
[2] => 4
[3] => 3
[4] => 2
[5] => 1
)
Что я тут делаю не так, почему первый элемент не отсортирован?
Эй, пожалуйста, проверьте второе условие вашего цикла wile в вашем алгоритме и коде PHP, это может помочь вам …
Других решений пока нет …