这个选择排序代码有什么问题

时间:2015-01-19 19:08:19

标签: php algorithm

 <?php
// Selection Sort in PHP
$arr = array(64, 25, 12, 22, 11);
var_export(selection_sort($arr));

function selection_sort($arr) {
    $len = count($arr);
    for($i = 0; $i < $len; $i++) {
        $min = $i;
        for($j = $i + 1; $j < $len; $j++) {
            if($arr[$j] < $arr[$min]) {
                $min = $j;
            }
            swap($min, $i, $arr);
        }
    }
    return $arr;
}

// pass by reference
function swap($i, $j, &$arr) {
    $tmp = $arr[$i];
    $arr[$i] = $arr[$j];
    $arr[$j] = $arr[$tmp];
}
?>

我收到此错误

  

PHP注意:未定义的偏移:25英寸   /私营/无功/文件夹/ 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner /无题   3.php在第23行

     

注意:未定义的偏移量:25英寸   /私营/无功/文件夹/ 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner /无题   3.php第23行PHP注意:未定义的偏移量:12 / in / private / var / folders / 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner / Untitled   3.php在第23行

     

注意:未定义的偏移量:12英寸   /私营/无功/文件夹/ 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner /无题   3.php第23行PHP注意:未定义索引:在/ private / var / folders / 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner / Untitled   3.php在第23行

     

注意:未定义的索引:in   /私营/无功/文件夹/ 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner /无题   3.php第23行PHP注意:未定义索引:在/ private / var / folders / 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner / Untitled   3.php在第23行

     

注意:未定义的索引:in   /私营/无功/文件夹/ 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner /无题   3.php第23行PHP注意:未定义索引:在/ private / var / folders / 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner / Untitled   3.php在第23行

     

注意:未定义的索引:in   /私营/无功/文件夹/ 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner /无题   3.php第23行PHP注意:未定义的偏移量:22 in / private / var / folders / 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner / Untitled   3.php在第23行

     

注意:未定义的偏移:22英寸   /私营/无功/文件夹/ 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner /无题   3.php第23行PHP注意:未定义索引:在/ private / var / folders / 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner / Untitled   3.php在第23行

     

注意:未定义的索引:in   /私营/无功/文件夹/ 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner /无题   3.php第23行PHP注意:未定义索引:在/ private / var / folders / 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner / Untitled   3.php在第23行

     

注意:未定义的索引:in   /私营/无功/文件夹/ 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner /无题   3.php第23行PHP注意:未定义的偏移量:11 / in / private / var / folders / 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner / Untitled   3.php在第23行

     

注意:未定义的偏移:11英寸   /私营/无功/文件夹/ 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner /无题   3.php第23行PHP注意:未定义索引:在/ private / var / folders / 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner / Untitled   3.php在第23行

     

注意:未定义的索引:in   /私营/无功/文件夹/ 83 / 98g8707d0f364z7m1pm76vlh0000gr / T / CodeRunner /无题   3.php第23行NULL

编辑:NM得到了它 我错误地将$ tmp用作数组的索引而不是值。

1 个答案:

答案 0 :(得分:1)

<?php
// Selection Sort in PHP
$arr = array(64, 25, 12, 22, 11);
var_export(selection_sort($arr));

function selection_sort($arr) {
    $len = count($arr);
    for($i = 0; $i < $len; $i++) {
        $min = $i;
        for($j = $i + 1; $j < $len; $j++) {
            if($arr[$j] < $arr[$min]) {
                $min = $j;
            }
            swap($min, $i, $arr);
        }
    }
}

// pass by reference
function swap($i, $j, &$arr) {
    $tmp = $arr[$i];
    $arr[$i] = $arr[$j];
    $arr[$j] = $tmp;
}
?>

$arr[$tmp]更改为$tmp,因为$ tmp一直是值,而不是键。