当前位置:首页 > 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实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 //…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…

php 实现md5

php 实现md5

使用 PHP 内置函数实现 MD5 PHP 提供了 md5() 函数,可以直接计算字符串的 MD5 哈希值。该函数接受一个字符串参数,返回 32 字符的十六进制哈希值。 $string = "H…