PHP常用的排序和查找算法

yizhihongxing

PHP常用的排序和查找算法

排序算法

冒泡排序

冒泡排序是一种简单的排序算法。 它多次遍历要排序的列表,每次比较相邻的两项,如果它们的顺序错误就把它们交换过来。

示例代码如下:

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

$arr = array(3, 8, 2, 1, 6, 5, 4, 7);
$arr = bubble_sort($arr);
print_r($arr);

输出结果:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
)

快速排序

快速排序也是一种常用的排序算法。 它的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都要比另一部分的所有数据都要小,然后再按此方法分别对两部分数据进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

示例代码如下:

function quick_sort($arr) {
    $len = count($arr);
    if($len <= 1) {
        return $arr;
    }
    $mid = $arr[0];
    $left = array();
    $right = array();
    for($i=1; $i<$len; $i++) {
        if($arr[$i] > $mid) {
            $right[] = $arr[$i];
        } else {
            $left[] = $arr[$i];
        }
    }
    $left = quick_sort($left);
    $right = quick_sort($right);
    return array_merge($left, array($mid), $right);
}

$arr = array(3, 8, 2, 1, 6, 5, 4, 7);
$arr = quick_sort($arr);
print_r($arr);

输出结果:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
)

查找算法

顺序查找

顺序查找是一种简单的查找算法,它从数据的一端开始,逐个比较数据元素,以此查找所需的数据元素。时间复杂度为$O(n)$。

示例代码如下:

function sequential_search($arr, $key) {
    $len = count($arr);
    for($i=0; $i<$len; $i++) {
        if($arr[$i] == $key) {
            return $i; 
        }
    }
    return -1;
}

$arr = array(3, 8, 2, 1, 6, 5, 4, 7);
$key = 6;
$index = sequential_search($arr, $key);
echo "Value ".$key." found at index ".$index;

输出结果:

Value 6 found at index 4

二分查找

二分查找是一种高效的查找算法,前提是数据必须是有序的。算法的基本思想是先找到中间的元素进行比较,如果等于则找到,如果小于则在左边继续查找,如果大于则在右边继续查找,以此类推。时间复杂度为$O(Logn)$。

示例代码如下:

function binary_search($arr, $key) {
    $low = 0;
    $high = count($arr) - 1;
    while($low <= $high) {
        $mid = intval(($low + $high) / 2);
        if($arr[$mid] == $key) {
            return $mid;
        } elseif($arr[$mid] < $key) {
            $low = $mid + 1;
        } else {
            $high = $mid - 1;
        }
    }
    return -1;
}

$arr = array(1, 2, 3, 4, 5, 6, 7, 8);
$key = 6;
$index = binary_search($arr, $key);
echo "Value ".$key." found at index ".$index;

输出结果:

Value 6 found at index 5

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP常用的排序和查找算法 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • JavaScript实现基础排序算法的示例详解

    JavaScript实现基础排序算法的示例详解 排序算法可以说是计算机科学中最基础的算法之一。而对于前端开发者来说,掌握一些简单的排序算法是很有必要的,因为它们可以帮助我们解决很多实际问题,如搜索结果排序、排名等。在这里,我们将讲解JavaScript如何实现基础排序算法。 冒泡排序 冒泡排序是最简单的排序算法之一。它将数组中的元素两两比较,如果顺序不正确就…

    算法与数据结构 2023年5月19日
    00
  • JS实现数组随机排序的三种方法详解

    JS实现数组随机排序的三种方法详解 在JavaScript中,实现数组的随机排序是十分常见的需求。本篇文章将讲解三种实现数组随机排序的方法。 方法一:Fisher-Yates算法 Fisher-Yates算法(也被称为 Knuth算法)是实现数组随机排序最常用的算法之一。该算法的思路很简单,即从数组末尾开始,将当前位置的数与它之前的任意一个数交换顺序,直到数…

    算法与数据结构 2023年5月19日
    00
  • STl中的排序算法详细解析

    STl中的排序算法详细解析 概述 在STL中,sort是一种常用的排序算法。sort算法旨在将元素从小到大排序,但也可以使用cmp函数指定排序方式。 算法实现 sort算法基于“快速排序”算法的实现。其基本思想是从待排序列中选取一定的数值作为划分元素(pivot),通过一趟排序将所有比该元素小的数放到它的左边,所有比该元素大的数放到它的右边,然后再对左右两个…

    算法与数据结构 2023年5月19日
    00
  • 京东在数据挖掘方面对推荐技术的优化

    京东在数据挖掘方面对推荐技术的优化 京东是中国著名的电商平台,一直在推进自己的推荐系统技术,以提高用户交互体验和推广效果。在数据挖掘方面,京东对推荐技术进行了一系列的优化,包括以下几个方面: 1. 数据收集和处理 京东首先通过大数据技术收集和整理用户的行为数据,包括购买、浏览、评价等多个方面。同时利用机器学习技术进行数据建模,包括对用户画像、商品描述等方面的…

    算法与数据结构 2023年5月19日
    00
  • C语言库函数qsort及bsearch快速排序算法使用解析

    这里是关于C语言库函数qsort及bsearch快速排序算法使用的详细攻略。 qsort排序函数 1. 定义 qsort是C语言标准库中快速排序算法的一个实现函数。它用于对一个数组中的元素进行排序。qsort函数的定义如下: void qsort(void* base, size_t nitems, size_t size, int (*compar)(co…

    算法与数据结构 2023年5月19日
    00
  • JS深入学习之数组对象排序操作示例

    《JS深入学习之数组对象排序操作示例》是一篇介绍JavaScript数组排序相关操作的文章,主要包含以下内容: 1. 数组对象排序 1.1 sort()方法 sort()方法是JavaScript中的一个数组排序方法,可以用于对数组的元素进行排序。sort()方法可以接收一个可选的排序函数作为参数,通过这个函数,我们可以实现自定义的排序规则。 语法为:arr…

    算法与数据结构 2023年5月19日
    00
  • PHP实现二维数组按照指定的字段进行排序算法示例

    下面是详细讲解“PHP实现二维数组按照指定的字段进行排序算法示例”的完整攻略。 问题描述 有一个包含多个元素、每个元素又包含多个键值对的PHP二维数组,现在需要按照指定的某个字段对它们进行排序。怎么实现? 解决方法 我们可以使用PHP的usort()函数来实现。usort()函数是PHP的内置函数,可以通过自定义的排序函数来对数组进行排序。这里我们可以通过编…

    算法与数据结构 2023年5月19日
    00
  • 深入了解javascript 数组的sort方法

    深入了解JavaScript数组的sort方法 简介 在JavaScript中,数组(Array)是一个非常常用的数据结构,而sort()是Array原型上的非常常用的方法,可用于排序。数组中的元素可以是任何类型,但在排序时,所有元素都将转换为字符串形式,所以有时打算对不同数据类型的元素进行排序,您可能需要使用自定义比较函数。 基本使用方法 sort()方法…

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部