golang 快速排序与 PHP 快速排序


本文摘自网络,作者xiaojinglong123,侵删。

Heading 4 golang版

func main() {
    arr := []int{3,12, 3, 3, 121, 454, 66, 33, 525, 56, 818, 444, 655, 5, 87, 652, 222, 16, 55, 43144}
    result:= quickSort(arr[:])
    fmt.Println(result)
}

func quickSort(a []int) []int {
    if len(a) == 1 {
        return a
    }
    //样本数字
    flag := a[0]
    //比flag 小的
    left := make([]int, 0)
    //比flag大的
    right := make([]int, 0)
    //相同值
    same := make([]int, 0)
    for i := 1; i < len(a); i++ {
        if a[i] < flag {
            left = append(left, a[i])
        }

        if a[i] > flag {
            right = append(right, a[i])
        }

        if a[i] == flag {
            same = append(same, a[i])
        }
    }
    if len(left) > 0 {
        left = quickSort(left)
    }

    if len(right) > 0 {
        right = quickSort(right)
    }
    return append(append(append(left, same...), flag), right...)
}

###结果:

[3 3 3 5 12 16 33 55 56 66 87 121 222 444 454 525 652 655 818 43144]

Heading 4 PHP版

public function index($arr)
{
    $arr = [32, 1, 2, 13, 42, 33, 34, 56, 33, 23, 67, 23, 365, 87665, 54, 68, 3];
    $result = $this->quickSort($arr);
    print_r(result );
}

public function quickSort($arr)
{
        if (count($arr) <= 1) {
            return $arr;
        }
        $middle = $arr[0];
        $left   = $right = $mid = [];
        for ($i = 1; $i < count($arr); $i++) {
            if ($middle > $arr[$i]) {
                $left[] = $arr[$i];
            } elseif ($middle == $arr[$i]) {
                $mid[] = $arr[$i];
            } elseif ($middle < $arr[$i]) {
                $right[] = $arr[$i];
            }
        }
        $left  = $this->quickSort($left);
        $mid   = $this->quickSort($mid);
        $right = $this->quickSort($right);
        return array_merge($left, $mid, [$middle], $right);
}

###结果

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 13
    [4] => 23
    [5] => 23
    [6] => 32
    [7] => 33
    [8] => 33
    [9] => 34
    [10] => 42
    [11] => 54
    [12] => 56
    [13] => 67
    [14] => 68
    [15] => 365
    [16] => 87665
)


相关阅读 >>

手撸Golang 结构型设计模式 享元模式

聊聊dubbo-Go-proxy的jtypes

深度剖析Golang sync.once源码

Go-carbon1.2.0发布了!完善优化对orm的多场景支持

教你用Golang实现直播和点播功能

Golang map有什么用

Golang到底能做什么

Golang gmssl编译不过

vim--Golang开发配置

Go module 引入本地包的问题

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...