为什么我在算法中为到位快速排序获得了未定义的索引错误?

时间:2013-03-03 00:37:34

标签: php algorithm

<?php

$arr = array('1', '-1', '3', '-2');

function inPlaceQuicksort($arr){
    inPlaceQuickSortProcessing($arr, 0, count($arr));
    return $arr;
}

function inPlaceQuickSortProcessing(&$arr, $pivotIndex, $arraySize){

    if($pivotIndex + 1>= $arraySize)
        return;
    else{
        for($i = $pivotIndex + 1; $i++; $i<$arraySize){

            if($arr[$i] < $arr[$pivotIndex]){
                $temp = $arr[$i];
                unset($arr[$i]);
                array_values($arr);
                array_splice($arr, $pivotIndex, 0, $temp);
                $pivotIndex++;
            }
        }                
    }
    //inPlaceQuickSortProcessing($arr, 0, $pivotIndex+1);
    //inPlaceQuickSortProcessing($arr, $pivotIndex+1, $arraySize);            
}

inPlaceQuicksort($arr);


?>

for循环中的最后一个表达式是否确保$i<$arraySize

1 个答案:

答案 0 :(得分:4)

for($i = $pivotIndex + 1; $i++; $i<$arraySize){

应该是

for($i = $pivotIndex + 1; $i<$arraySize; $i++){