標籤:++ bsp 退出 php版本 index 輸出 迴圈 版本 for
function InsertSort(array $container)
{
$count = count($container);
for ($i = 1; $i < $count; $i++){
$temp = $container[$i];
$j = $i - 1;
// Init
while ($container[$j] > $temp){
$container[$j+1] = $container[$j];
$container[$j] = $temp;
$j--;
print_r($container);
if ($j < 0) break;
}
}
return $container;
}
print_r(InsertSort([3, 12, 42, 1, 24, 5, 346, 7]));
列印出i=3時輸出的$container
Array
(
[0] => 3
[1] => 12
[2] => 1
[3] => 42
[4] => 24
[5] => 5
[6] => 346
[7] => 7
)
Array
(
[0] => 3
[1] => 1
[2] => 12
[3] => 42
[4] => 24
[5] => 5
[6] => 346
[7] => 7
)
Array
(
[0] => 1
[1] => 3
[2] => 12
[3] => 42
[4] => 24
[5] => 5
[6] => 346
[7] => 7
)從而看出array[3]的1,一步一步移動到array[0]。當array[2]的42 > array[3]的1 時 進入while迴圈,互換位置,
Array
(
[0] => 3
[1] => 12
[2] => 1
[3] => 42
[4] => 24
[5] => 5
[6] => 346
[7] => 7
)隨即j-1=1,繼續判斷當array[1]的12 > array[2]的1 進入while迴圈,互換位置,
Array
(
[0] => 3
[1] => 1
[2] => 12
[3] => 42
[4] => 24
[5] => 5
[6] => 346
[7] => 7
)隨即j-1=0,繼續判斷當array[0]的3 > array[1]的1 進入while迴圈,互換位置,
Array
(
[0] => 1
[1] => 3
[2] => 12
[3] => 42
[4] => 24
[5] => 5
[6] => 346
[7] => 7
)隨即j-1=-1,break退出while。i=4繼續迴圈;得到最終結果:
Array
(
[0] => 1
[1] => 3
[2] => 12
[3] => 42
[4] => 24
[5] => 5
[6] => 346
[7] => 7
)
插入排序 php版本