当前位置:首页 > PHP

排序算法 php实现

2026-02-13 15:54:17PHP

以下是在PHP中实现常见排序算法的几种方法,每种算法均附上代码示例和简要说明:

冒泡排序

通过重复比较相邻元素并交换位置完成排序,时间复杂度为O(n²)。

function bubbleSort($array) {
    $n = count($array);
    for ($i = 0; $i < $n - 1; $i++) {
        for ($j = 0; $j < $n - $i - 1; $j++) {
            if ($array[$j] > $array[$j + 1]) {
                $temp = $array[$j];
                $array[$j] = $array[$j + 1];
                $array[$j + 1] = $temp;
            }
        }
    }
    return $array;
}

快速排序

采用分治策略,通过选取基准值将数组分为两部分递归排序,平均时间复杂度O(n log n)。

function quickSort($array) {
    if (count($array) <= 1) return $array;
    $pivot = $array[0];
    $left = $right = [];
    for ($i = 1; $i < count($array); $i++) {
        if ($array[$i] < $pivot) $left[] = $array[$i];
        else $right[] = $array[$i];
    }
    return array_merge(quickSort($left), [$pivot], quickSort($right));
}

选择排序

每次遍历选择最小元素放到已排序序列末尾,时间复杂度O(n²)。

function selectionSort($array) {
    $n = count($array);
    for ($i = 0; $i < $n - 1; $i++) {
        $minIndex = $i;
        for ($j = $i + 1; $j < $n; $j++) {
            if ($array[$j] < $array[$minIndex]) {
                $minIndex = $j;
            }
        }
        if ($minIndex != $i) {
            $temp = $array[$i];
            $array[$i] = $array[$minIndex];
            $array[$minIndex] = $temp;
        }
    }
    return $array;
}

插入排序

将未排序元素插入到已排序部分的正确位置,适合小规模数据,时间复杂度O(n²)。

function insertionSort($array) {
    $n = count($array);
    for ($i = 1; $i < $n; $i++) {
        $key = $array[$i];
        $j = $i - 1;
        while ($j >= 0 && $array[$j] > $key) {
            $array[$j + 1] = $array[$j];
            $j--;
        }
        $array[$j + 1] = $key;
    }
    return $array;
}

归并排序

分治法典型应用,将数组分成两半分别排序后合并,时间复杂度O(n log n)。

function mergeSort($array) {
    if (count($array) <= 1) return $array;
    $mid = (int)(count($array) / 2);
    $left = array_slice($array, 0, $mid);
    $right = array_slice($array, $mid);
    return merge(mergeSort($left), mergeSort($right));
}

function merge($left, $right) {
    $result = [];
    while (!empty($left) && !empty($right)) {
        if ($left[0] <= $right[0]) array_push($result, array_shift($left));
        else array_push($result, array_shift($right));
    }
    return array_merge($result, $left, $right);
}

使用内置函数

PHP提供sort()rsort()等内置排序函数,底层使用快速排序实现:

排序算法 php实现

$array = [3, 1, 4];
sort($array);  // 升序
rsort($array); // 降序

以上实现可根据实际需求选择,大规模数据建议使用快速排序或归并排序,小规模数据可用插入排序。

标签: 算法php
分享给朋友:

相关文章

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

php实现推送消息推送消息

php实现推送消息推送消息

PHP 实现消息推送的方法 使用 WebSocket 实现实时推送 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适合实现实时消息推送。 安装 Ratchet 库(WebSo…

php实现文章

php实现文章

PHP实现文章管理功能 在PHP中实现文章管理功能通常涉及数据库操作、表单处理和页面展示。以下是实现文章管理的基本步骤: 数据库设计 创建articles表,包含字段如id、title、conten…

php session 实现购物车

php session 实现购物车

PHP Session 实现购物车的方法 初始化 Session 在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。 session_sta…