[英]Bubble Sort in PHP and Python
據我所知,這兩個程序應該做完全相同的事情。 但是,Python 版本有效,而 PHP 版本無效。 請問我錯過了什么?
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);
排序實際上是有效的,但是由於您沒有傳遞對bubble_sort($arr)
函數的引用,因此您永遠看不到實際結果。 告訴bubble_sort()
該陣列是由基准裝置要更改傳遞$my_list
,而不是副本$my_list
哦,你有一些編譯錯誤,使用$arr[i]
而不是$arr[$i]
// Bubble Sort
$my_list = [2,3,5,4,1];
function bubble_sort(&$arr){ // <-- changed to &$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]){
// also changed this line to pass just the indexes
swap($arr, $i, $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);
如果您在關閉錯誤報告的實時服務器上進行測試,請在開發腳本時將這些行添加到您正在開發的任何腳本的頂部。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
並且編譯錯誤會顯示在網頁上
冒泡排序 PHP
$data_set = [3,44,38,5,15,26,27,2,46,4];
function bubble_sort($data_set){
$number_of_items = count($data_set);
for($i = 0; $i <= $number_of_items - 2; $i++){
for($j = 0; $j <= $number_of_items -($i+2); $j++){
if($data_set[$j] > $data_set[$j + 1]){
$temp = $data_set[$j];
$data_set[$j] = $data_set[$j + 1];
$data_set[$j + 1] = $temp;
}
}
}
return $data_set;
}
echo '<pre>';
print_r(bubble_sort($data_set));
echo '</pre>';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.