zoukankan      html  css  js  c++  java
  • 常见排序算法-php

    1.归并排序

    $a = [1, 4, 6, 8, 10, 14, 16];
    $b = [2, 3, 5, 8, 9, 11];
    function merge_sort($a, $b)
    {
        $a_i = $b_i = 0;
        $count_a = count($a);
        $count_b = count($b);
        $ret = [];
        while ($a_i < $count_a && $b_i < $count_b) {
            if ($a[$a_i] > $b[$b_i]) {
                array_push($ret, $b[$b_i]);
                $b_i++;
            } else {
                array_push($ret, $a[$a_i]);
                $a_i++;
            }
        }
        if ($a_i < $count_a) {
            $ret = array_merge($ret, array_slice($a, $a_i));
        }
        if ($b_i < $count_b) {
            $ret = array_merge($ret, array_slice($b, $b_i));
        }
        return $ret;
    }
    
    $ret = merge_sort($a, $b);
    echo implode(',', $ret);
    

    2.选择排序

    $arr = [1, 5, 2, 7, 97, 23, 1, 4];
    function select_sort(array $arr)
    {
        $count = count($arr);
        if ($count < 2) return $arr;
        for ($i = 0; $i < $count; $i++) {
            $min = $arr[$i];
            $min_i = $i;
            for ($j = $i; $j < $count; $j++) {
                if ($arr[$j] < $min) {
                    $min = $arr[$j];
                    $min_i = $j;
                }
            }
            $arr[$min_i] = $arr[$i];
            $arr[$i] = $min;
        }
        return $arr;
    }
    
    $ret = select_sort($arr);
    echo implode(',', $ret);
    

    3.插入排序

    $arr = [1, 5, 2, 7, 97, 23, 1, 4];
    function insert_sort($arr)
    {
        $count = count($arr);
        if ($count < 2) return $arr;
        for ($i = 0; $i < $count; $i++) {
            for ($j = $i; $j > 0; $j--) {
                if ($arr[$j] < $arr[$j - 1]) {
                    $tmp = $arr[$j - 1];
                    $arr[$j - 1] = $arr[$j];
                    $arr[$j] = $tmp;
                }
            }
        }
        return $arr;
    }
    
    $ret = insert_sort($arr);
    echo implode(',', $ret);
    

    4.冒泡排序

    $arr = [1, 5, 2, 7, 97, 23, 1, 4];
    function maopao_sort($arr)
    {
        $count = count($arr);
        if ($count < 2) return $arr;
        for ($i = 0; $i < $count; $i++) {
            for ($j = 0; $j < $count - $i - 1; $j++) { // 注意$j的上限,小心数组越界
                if ($arr[$j] > $arr[$j + 1]) {
                    $tmp = $arr[$j + 1];
                    $arr[$j + 1] = $arr[$j];
                    $arr[$j] = $tmp;
                }
            }
        }
        return $arr;
    }
    
    $ret = maopao_sort($arr);
    echo implode(',', $ret);
  • 相关阅读:
    HTTP客户端识别与Cookie机制
    javascript模式之模块模式
    js类式继承模式学习心得
    关于html自闭合标签要不要加空格和斜杠的问题?
    分享两件有趣的事情
    PS Web切图界面设置
    这是什么
    关于前后端分离我的理解
    模块化方案esl以及amd的依赖方式
    node 内存管理相关
  • 原文地址:https://www.cnblogs.com/wangweiwen/p/6241474.html
Copyright © 2011-2022 走看看