gpt4 book ai didi

php - PHP 和 Python 中的冒泡排序

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:57 26 4
gpt4 key购买 nike

据我所知,这两个程序应该做完全相同的事情。但是,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 - PHP 和 Python 中的冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39790316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com