據我所知,這兩個程序應該做同樣的事情。但是,Python版本可以工作,而PHP版本不能。請問我錯過了什麼?泡沫排序在PHP和Python
def bubbleSort(alist):
for passnum in range(len(alist)-1,0,-1):
for i in range(passnum):
if alist[i]>alist[i+1]:
temp = alist[i]
alist[i] = alist[i+1]
alist[i+1] = temp
my_list = [2,3,5,4,1]
bubbleSort(my_list)
print(my_list)
<?php
// Bubble Sort
$my_list = [2,3,5,4,1];
function bubble_sort($arr){
$size = count($arr);
for($pass_num = $size - 1; $pass_num >= 0; $pass_num--){
for($i = 0; $i < $pass_num; $i++){
if($arr[i] > $arr[$i + 1]){
swap($arr, $arr[i], $arr[$i+1]);
}
}
}
}
function swap(&$arr, $a, $b) {
$tmp = $arr[$a];
$arr[$a] = $arr[$b];
$arr[$b] = $tmp;
}
bubble_sort($my_list);
print_r ($my_list);
唯一的一次,其實我已經做了冒泡排序在大學上。所以我猜這是作業吧? – RiggsFolly
實際上沒有。從40多歲開始自學! – Robin
不熟悉PHP,但你代碼的方式我猜在swap中聲明'&$ arr'意味着參數是通過引用傳遞的?如果是這樣,那麼在PHP排序函數的聲明中不會通過引用傳遞數組,因此在函數返回後沒有對數組進行排序。 – xuanluong