冒泡排序:

由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

function mpSort0($array){
    $len = count($array);
    for($i = 0; $i < $len; $i++){
        for($j = $len - 1; $j > $i; $j--){
            if($array[$j] < $array[$j-1]){
                $tmp = $array[$j];
                $array[$j] = $array[$j-1];
                $array[$j-1] = $tmp;
            }
        }
    }
    return $array;
}

function mpSort1($array){
    $len = count($array);
    for($i = 0; $i < $len - 1; $i++){
        for($j = 0; $j < $len - 1 - $i; $j++){
            if($array[$j] > $array[$j+1]){
                $tmp = $array[$j];
                $array[$j] = $array[$j+1];
                $array[$j+1] = $tmp;
            }
        }
    }
    return $array;
}

$array = ['10', '76', '23', '35', '4', '24', '45'];
$sort_array = mpSort0($array);
print_r($sort_array);

快速排序:

快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

function ks_Sort($array){
    $len = count($array);
    if($len <= 1){
        return $array;
    }
    $left = $right = [];
    for($i = 1; $i < $len; $i++){
        if($array[$i] < $array[0]){
            $left[] = $array[$i];
        }else{
            $right[] = $array[$i];
        }
    }

    //递归调用
    $left = ks_Sort($left);
    $right = ks_Sort($right);
    return array_merge($left, [$array[0]], $right);
}

$array = ['10', '76', '23', '35', '4', '24', '45'];
$sort_array = ks_Sort($array);
print_r($sort_array);

选择排序:

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

function xz_Sort($array){
    $len = count($array);
    for($i = 0; $i < $len-1; $i++){
        //最小值
        $min = $array[$i];
        //最小值对应的key
        $minKey = $i;

        for($j = $i+1; $j < $len; $j++){
            if($min > $array[$j]){
                $min = $array[$j];
                $minKey = $j;
            }
        }
        $tmp = $array[$i];
        $array[$i] = $array[$minKey];
        $array[$minKey] = $tmp;
    }
    return $array;
}

$array = ['10', '76', '23', '35', '4', '24', '45'];
$sort_array = xz_Sort($array);
print_r($sort_array);

插入排序:

从第一个元素开始,该元素可以认为已经被排序,取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位置,重复步骤3,直到找到已排序的元素小于或者等于新元素的位置,将新元素插入到下一位置中,重复步骤2。

function cr_Sort($array){
    $len = count($array);
    for($i = 1; $i < $len; $i++){
        //当前值
        $key = $array[$i];
        //当前位置
        $pos = $i;

        while($pos > 0 && $array[$pos-1] > $key){
            $array[$pos] = $array[$pos-1];
            $pos = $pos -1;
        }
        $array[$pos] = $key;
    }
    return $array;
}

$array = ['76', '10', '23', '35', '4', '24', '45'];
$sort_array = cr_Sort($array);
print_r($sort_array);

results matching ""

    No results matching ""