function quickSortRecursion(&$arr, $begin, $end)
{
    if ($begin < $end) {
        $left = $begin;
        $right = $end;
        $temp = $arr[$begin];
        // $temp为基准元素
        // 把小于$temp的元素放到$temp左边,大于它的放在右边
        while ($left < $right) {
            while ($left < $right && $arr[$right] >= $temp) $right--;
            if ($left < $right) {
                $arr[$left++] = $arr[$right];
            }
            while ($left < $right && $arr[$left] <= $temp) $left++;
            if ($left < $right) {
                $arr[$right--] = $arr[$left];
            }
        }
        $arr[$left] = $temp;
        quickSortRecursion($arr, $begin, $left - 1);
        quickSortRecursion($arr, $left + 1, $end);
    }
    return $arr;
}
function quickSort($arr)
{
    $len = count($arr);
    quickSortRecursion($arr, 0, $len - 1);
    return $arr;
}
$arr = [3, 1, 13, 5, 7, 11, 2, 4, 14, 9, 15, 6, 12, 10, 8];
print_r(quickSort($arr));
exit;
//insertSort
$arr = array(3, 2, 1);
for ($i = 0; $i < count($arr) - 1; $i++) {
    $k = $i;
    for ($j = $i + 1; $j < count($arr); $j++) {
        $k = ($arr[$k] > $arr[$j]) ? $j : $k;
    }
    $tmp = $arr[$i];
    $arr[$i] = $arr[$k];
    $arr[$k] = $tmp;
}
print_r($arr);
exit;
//bubbleSort
$arr = array(3, 2, 1);
$flag = 0;
for ($i = count($arr) - 1; $i > 0; $i--) {
    for ($j = 1; $j <= $i; $j++) {
        if ($arr[$j - 1] > $arr[$j]) {
            $flag = 1;
            $tmp = $arr[$j - 1];
            $arr[$j - 1] = $arr[$j];
            $arr[$j] = $tmp;
        }
        if ($flag == 0) {  //如果本次没有发生交换的话就跳到下一次
            continue;
        }
    }
}
print_r($arr);
exit;
//每次由队列的头部开始删除元素
//从1 开始
//当数到3的时候,就删除第3个元素,然后从第四个开始重新从1开始
//n为整个数组 m相隔几个删除一个
function ysf($n, $m)
{
    $arr = range(1, $n);
    $i = 0;
    while ($m <= count($arr)) {
        ++$i;
        $surive = array_shift($arr); //每一次都要删除一个元素
        if ($i % $m <> 0) {
            array_push($arr, $surive);
        } elseif ($i > count($surive)) { //删除了要重新从1开始数了。
            $i = 0;
        }
    }
    return $arr;
}
var_dump(ysf(7, 3));
exit;
                
        
    
 
                    转载请注明原文地址: https://www.6miu.com/read-82649.html