当前位置:首页 > PHP

php自己实现sort

2026-02-15 08:50:28PHP

PHP 自定义排序实现

在 PHP 中,可以通过自定义比较函数来实现排序功能。PHP 提供了多种排序函数,如 usort()uasort()uksort(),它们允许用户定义自己的排序逻辑。

使用 usort() 实现自定义排序

usort() 函数用于对数组进行排序,并使用用户自定义的比较函数。以下是一个示例:

php自己实现sort

$numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];

usort($numbers, function($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
});

print_r($numbers);

自定义对象排序

如果需要排序对象数组,可以定义比较函数来根据对象的属性排序:

php自己实现sort

class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$people = [
    new Person('Alice', 30),
    new Person('Bob', 25),
    new Person('Charlie', 35)
];

usort($people, function($a, $b) {
    return $a->age <=> $b->age;
});

print_r($people);

实现冒泡排序算法

如果需要完全自己实现排序算法,可以参考以下冒泡排序的实现:

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

$numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
bubbleSort($numbers);
print_r($numbers);

实现快速排序算法

快速排序是另一种高效的排序算法,以下是 PHP 实现:

function quickSort(array &$arr, $left = 0, $right = null) {
    if ($right === null) {
        $right = count($arr) - 1;
    }

    if ($left < $right) {
        $pivotIndex = partition($arr, $left, $right);
        quickSort($arr, $left, $pivotIndex - 1);
        quickSort($arr, $pivotIndex + 1, $right);
    }
}

function partition(array &$arr, $left, $right) {
    $pivot = $arr[$right];
    $i = $left - 1;

    for ($j = $left; $j < $right; $j++) {
        if ($arr[$j] < $pivot) {
            $i++;
            [$arr[$i], $arr[$j]] = [$arr[$j], $arr[$i]];
        }
    }

    [$arr[$i + 1], $arr[$right]] = [$arr[$right], $arr[$i + 1]];
    return $i + 1;
}

$numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
quickSort($numbers);
print_r($numbers);

注意事项

  • 自定义比较函数应返回整数:小于 0 表示第一个参数小于第二个参数,等于 0 表示相等,大于 0 表示第一个参数大于第二个参数。
  • 对于大型数组,快速排序通常比冒泡排序更高效。
  • PHP 内置的排序函数(如 sort())已经高度优化,自定义排序算法可能性能较差。

标签: phpsort
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('lo…

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $n…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERV…

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面…