PHP排序算法_PHP

PHP排序算法

PHP排序算法_PHP
(图片来源网络,侵删)

在PHP中,有多种排序算法可以使用,下面将介绍几种常见的排序算法,包括冒泡排序、选择排序、插入排序和快速排序。

1、冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数组,比较相邻的元素并交换它们的位置,直到整个数组按照升序排列。

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

2、选择排序

选择排序是一种简单直观的排序算法,它通过每次从待排序的数组中选择最小(或最大)的元素,并将其放到已排序部分的末尾,直到整个数组排序完成。

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

3、插入排序

插入排序是一种简单且高效的排序算法,它通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

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

4、快速排序

快速排序是一种常用的高效排序算法,它采用分治的思想,选取一个基准元素,将数组分为两部分,一部分小于基准元素,另一部分大于基准元素,然后对这两部分分别进行递归排序,最后合并两个有序数组。

function quickSort($arr) {
    if (count($arr) <= 1) {
        return $arr;
    } else {
        $pivot = array_shift($arr); // 选取第一个元素作为基准元素
        $left = []; // 存放小于基准元素的值
        $right = []; // 存放大于基准元素的值
        foreach ($arr as $value) {
            if ($value < $pivot) {
                $left[] = $value; // 将小于基准元素的值放入左侧数组中
            } else {
                $right[] = $value; // 将大于基准元素的值放入右侧数组中
            }
        }
        return array_merge(quickSort($left), [$pivot], quickSort($right)); // 递归调用快速排序函数并合并结果数组返回
    }
}

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/677255.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-06-08 14:04
下一篇 2024-06-08 14:12

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入