PHP实现数组排序的方法:快速排序,插入排序,归并排序算法
php中对于数组的排序方法是有很多种的,每种数组排序也都有各自不同的原理,下面就来具体看一下关于快速排序算法,归并排序算法以及插入排序算法的示例。
异形数组的遍历
求如下数组中数字的平均值:
$arr1 = array( 1, 2, array(31, 32, 33), 4, array(51, 52, 53, array(541, 542, 543, 544) ), 6, array(71, 72, 73), ); $count = 0; //计数 $sum = GetArraySum($arr1); echo “\
快速排序算法
原理描述:
对于这样一个数组:[5, 1,2, 6,7];
取出第一项(并作为中间数组),并将其余项与其对比后,分为两个数组:
左边数组项比中间项小,右边数组不比中间项小。
如果左边数组和右边数组已经是排好序的数组,则将这3者合并起来,就是最终结果。
如果左边数组和右边数组还不是排好序的数组,则继续递归使用本函数获取有序数组。
原理图:
原理性数据:
$arr1 = [5, 2, 1, 6,7]; //有力说明原理的数据1
小的:[2, 1], 大的:[6, 7], 中间的: [5]
将三者合并: [1, 2, 5, 6, 7];
$arr1 = [2, 1]; //有力说明原理的数据2
中间:[2], 左边:[1] , []
具体案例:
$arr1 = [5, 2, 4, 6, 1, 3]; $arr1 = [5, 2, 4, 6, 1, 3]; //$arr1 = [5, 3, 2, 8, 7]; echo “\
插入排序算法
原理描述:
对于这样一个数组:[2, 3, 4, 1];
要将某个数n插入到一个已经排好序的数组中,
只要将n跟这个数组的项从后往前一个一个对比,只要发现某项比n大,
就将该项后移一位,然后继续往前取出并对比,比n大就往后移动一位,以此类推。
最后没有比n大的时候,就把n放入到刚才往后移动时空出来的那个位置上。
对于一个数组,第1项就可以当做一个“已经排好序”的数组,
则第2项就可以遵照上述原理来进行“插入排序”,于是前两个就可以排好,
并成为了具有两个元素的“排好序的数组”。后续以此类推。
原理图:
原理数据:
$arr1 = [2, 3, 4, 1]; //有力说明原理的数据1
$arr1 = [2, 3, 1]; //有力说明原理的数据2
$arr1 = [2, 1]; //有力说明原理的数据3
$arr1 = [1, 2]; //有力说明原理的数据3
具体案例:
$arr1 = [5, 2, 4, 6, 1, 3]; $arr1 = [2, 3, 4, 1]; $arr1 = [2, 4, 5, 6, 1, 3]; echo “\
归并排序算法
原理描述:
对于这样的一个数组: $arr1 = [1, 3, 5, 2, 4, 6];将其一分为二:$a = [1, 3, 5],
$b = [2, 4, 6];
如果有两个各自已经排好序的数组,则对这两个数组进行如下操作后,就可以获得一个排好序的这两个数组的“溶合数组”:
取出数组a的第一项a1,再取出数组b的第一项b1,比较a1和b1的大小,
并将小的(假设为a1)放入一个新数组,并去删除对应数组a的第一项,
而后再取出对应数组的第一项(不是刚才的那个数据了),而后继续将两者对比大小
每次都放入小的到新数组中,并继续下一次的“删除,取数,对比”。。。。
这样之后最终的结果是,新的数组中就可以得到一个新的排好序的数组。
对于尚未排好序的数组,只要对其以递归方式继续“一分为二”地分割,最终会得到最短数组——只有一个或0个单元,这种数组自然是排好序的了。
原理图:
原理数据:
$arr1 = [1, 3, 5, 4, 6, 7, 8 ]; //有力说明原理的数据1
从中间一份为2: [ ]; [ 6, 7, 8]
[ 1, 3, 4, 5, ]
$arr1 = [1, 3, 2, 4]; //有力说明原理的数据2
演示案例:
$arr1 = [5, 2, 4, 6, 1, 3]; echo “\
相关推荐:
以上是PHP实现数组排序的方法:快速排序,插入排序,归并排序算法的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP中保留键名的快速数组排序方法:使用ksort()函数对键进行排序。使用uasort()函数使用用户定义的比较函数进行排序。实战案例:要按分数对用户ID和分数的数组进行排序,同时保留用户ID,可以使用uasort()函数和自定义比较函数。

深入理解JS数组排序:sort()方法的原理与机制,需要具体代码示例导语:数组排序是在我们日常的前端开发工作中非常常见的操作之一。JavaScript中的数组排序方法sort()是我们最常使用的数组排序方法之一。但是,你是否真正了解sort()方法的原理与机制呢?本文将带你深入理解JS数组排序的原理和机制,并提供具体的代码示例。一、sort()方法的基本用法

如何编写自定义PHP数组排序算法?冒泡排序:通过比较和交换相邻元素来排序数组。选择排序:每次选择最小或最大元素并将其与当前位置交换。插入排序:逐个插入元素到有序部分。

在PHP中按值排序数组,同时保留键名的方法是:使用usort()函数按值排序数组。向usort()函数传递一个匿名函数作为比较函数,该函数返回元素值的差值。usort()会根据匿名函数对数组进行排序,同时保持键名不变。

在PHP中,使用uasort()函数可按自定义排序规则对数组进行排序,同时保留原始键名。自定义比较函数是一个接受两个元素作为输入并返回整数的函数:负数表示前者小于后者,零表示相等,正数表示前者大于后者。

PHP中的asort()函数对数组按值进行排序,需要具体代码示例PHP是一种广泛使用的服务器端脚本语言,它具有丰富的数组处理函数。其中,asort()函数是一个非常有用的函数,它可以按照数组的值进行排序。本文将详细介绍asort()函数的使用方法,并给出具体的代码示例。asort()函数的作用是对数组按照值进行升序排列,同时保持键和值的关联。它是通过修改原数

使用PHP函数"sort"对数组按升序进行排序在PHP中,可以很方便地使用内置函数来对数组进行排序。其中,sort函数是最常用的函数之一,可以对数组按照升序进行排序。本文将介绍如何使用sort函数,并给出相应的代码示例。sort函数的语法如下:sort(array&$array,int$sort_flags=SORT_REGULAR):boo

优化PHP中多维数组排序的技巧:创建用户自订函数进行排序使用array_multisort()函数应用多维键重排序实战案例:按数组键值对对产品排序
