什么是冒泡排序 ? ---- 冒泡排序的英文名是 Bubble Sort,是一种最基础的交换排序算法。...相信每个人都喝过汽水吧,在汽水中常有许多的小气泡往上飘,这是因为组成气泡的二氧化糖比水要轻,所以小气泡才会一点一点往上浮,而冒泡排序之所以叫冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,...冒泡排序算法 ---- 一组无序的数列想要从小到大排序,通过遍历数组,比较相邻的两个元素,当左边的值大于右边的值时,交换双方的值 这是标准的冒泡排序算法,排序过程如下图所示: /** * 冒泡排序算法...) { $tmp = $arr[$j]; $arr[$j] = $arr[$j + 1]; $arr[$j + 1] = $tmp; } } } return $arr; } 推荐文章 ---- 冒泡排序算法
理解 冒泡排序,时间复杂度哦、O(N^2) 冒泡排序的核心部分是双重嵌套循环。不难看出冒泡排序的时间复杂度是 O(N 2)。这是一个非常高的时间复杂度。...冒泡排序早在 1956 年就有人开始研究,之后有很多人都尝试过对冒泡排序进行改进,但结果却令人失望。如 Donald E....Knuth(中文名为高德纳, 1974 年图灵奖获得者)所说:“冒泡排序除了它迷人的名字和导致了某些有趣的理论问题这一事实之外,似乎没有什么值得推荐的。” 代码实现 <?...php /** * Created by PhpStorm.
理解 每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。...这样在每次交换的时候就不会像冒泡排序一样只能在相邻的数之间进行交换,交换的距离就大得多了。因此总的比较和交换次数就少了,速度自然就提高了。当然在最坏的情况下,仍可能是相邻的两个数进行了交换。...因此快速排序的最差时间复杂度和冒泡排序是一样的,都是 O(N2),它的平均时间复杂度为 O (NlogN)。其实快速排序是基于一种叫做“二分”的思想。不稳定排序 代码实现 <?...php /** * Created by PhpStorm....* User: benny * Date: 18-11-20 * Time: 下午5:01 */ /** * 快速排序 * @param $array * @param $i * @param
所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序 算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。...一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符 合实际的优秀算法,得经过大量的推理和分析。...分别使用插入排序法,冒泡排序法,选择排序法,快速排序法,将下面数组中的值进行按照从小到大的顺序进行排序操作。...分析:从前往后对相邻的两个数字依次进行比较调整,让较大的数字往下沉,让较小的数字往上升,即每相邻的数字进行对比排序,顺序不符合时将其调换位置。...分析:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列
选择排序 方式:先让第一位与其他位比较大小找到最小的数字,然后是第二位与除第一位的其他位比较大小找出第二位,依此类推 $arr = [2,45,12,67,33,5,23,132,46]; for...方法:比较相邻两个位置的数据并进行排序 优化:添加字段 if_replace 判断该轮排序是否完成,如果完成则不再继续后面的排序 $arr = [2,45,12,67,33,5,23,132,46];...$if_replace){ break; } } print_r($arr); 插入排序 方法:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入...方法:设待排序元素序列有n个元素,首先取一个整数increment(小于n)作为间隔将全部元素分为increment个子序列, 所有距离为increment的元素放在同一个子序列中,在每一个子序列中分别实行直接插入排序...然后缩小间隔increment,重复上述子序列划分和排序工作。直到最后取increment=1,将所有元素放在同一个子序列中排序为止。
$arr = [3, 2, 5, 1, 7, 6]; function quickSort($arr) { $len = count($arr); ...
$arr = [3,2,5,1,7,6]; function select($arr) { $len = count($arr); if ($l...
php数组排序算法 推荐操作系统:windows7系统、PHP5.6、DELL G3电脑 1、冒泡排序 重复地走访过要排序的数列,依次比较两个元素,如果他们的顺序错误就把他们交换过来。...2、选择排序 首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。...3、插入排序 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。... $arr[$k+1]=$arr[$k]; $arr[$k]=$tmp; } } } return $arr; } 以上就是php...数组排序算法的介绍,大家可以就这四种排序算法的概念先进行理解,然后展开有关的代码示例练习。
快速排序: 1.基于二分的思想 2.第一个作为基准数,左右各一个指针,同时扫描,右边先走,找到比基准数小的停下 左边再走,找到比基准数大的停下,左右交换 3.当左右相遇的时候,把当前的和基准数调换,递归调用...4.快速排序的最差时间复杂度和冒泡排序是一样的都是O(N2),它的平均时间复杂度为O(NlogN) quickSort &arr,left,right if left>right return...php //快速排序 function quickSort(&$arr,$left,$right){ //left大于right的就退出 if($left>$right)
理解 归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。...:{6,100,202,301},{1,8,38},比较次数:4; 第三次归并后:{1,6,8,38,100,202,301},比较次数:4; 总的比较次数为:3+4+4=11; 逆序数为14; 归并排序是稳定的排序...,速度仅次于快速排序 代码实现 <?...php /** * Created by PhpStorm....* User: benny * Date: 18-12-2 * Time: 上午9:42 */ /** * 归并排序 * @param array $array * @return array
选择排序: 1.数组分成前后两个部分,前部分是排序的,后部分是无序的 2.两层循环,先假定当前循环的第一个索引为最小值,内部循环找比该索引还小的值,找到交换 for i;i<len;i++ minIndex...php function selectSort(&$arr){ $len=count($arr); for($i=0;$i<$len;$i++){
,可以计算出父结点的和孩子结点的下标; parent(i)=floor(i/2) left(i)=2i right=2i+1 3.最大堆和最小堆,最大堆:根结点是最大值,最小堆:根结点是最小值 4.堆排序就是把最大堆堆顶的最大数取出...,剩余的堆继续调整为最大堆,再次将堆顶的最大数取出,直到剩余数只有一个结束 5.最大堆调整(维护最大堆,子节点永远小于父结点) ;创建最大堆(把一个数组调整成最大堆的数组);堆排序(创建最大堆,交换,维护最大堆...function swap(&$arr,$a,$b){ $temp=$arr[$a]; $arr[$a]=$arr[$b]; $arr[$b]=$temp; } //排序的入口函数
$arr = [3,2,5,1,7,6]; function insert($arr) { $len = count($arr); if ($l...
$arr = [3,2,5,1,7,6]; function maopao($arr) { $len = count($arr); if ($l...
这里列出了几种PHP的排序算法的时间比较的结果,,希望对大家有所帮助 /* * php 四种排序算法的时间与内置的sort排序比较 * 3000个元素,四种算法的排序所用的时间比较 * 冒泡排序...857.98192024231ms * 选择排序 903.74493598938ms * 插入排序 296.8270778656ms * 快速排序 15.607833862305ms * sort...排序 0.95200538635254ms * 归并排序 14.61386680603ms * */ /* * @param 冒泡排序 * 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来...* 算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。...ms"; 从时间上来看,快速排序和归并排序在时间上比较有优势,但是也比不上sort排序,归并排序比较占用内存!
php //归并排序 function merge(&$A,$left,$mid,$right,$temp){ //7.左堆起始 $i=$left; /...for($i=0;$i<$t;$i++){ $A[$left+$i]=$temp[$i]; } } //1.利用分治法思想,递归的切分排序元素
本文主要介绍了一些常用的排序算法,以及PHP的代码实现等,希望对您能有所帮助。 本文来自于awaimai.com,由火龙果软件Luca编辑推荐。 作为phper,一般接触算法的编程不多。...但基本的排序算法还是应该掌握。 毕竟算法作为程序的核心,算法的好坏决定了程序的质量。 本文将依次介绍一些常用的排序算法,以及PHP实现。 1 快速排序 快速排序是由东尼·霍尔发展的一种排序算法。...冒泡排序是一种简单的排序算法。...但希尔排序是非稳定排序算法。...关于稳定性: 稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序 不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序 总结 以上所述是小编给大家介绍的PHP实现常用排序算法,希望对大家有所帮助
算法原理: 1.比较相邻的元素,如果第一个比第二个大,那么就交换这两个元素。 2.对每一对相邻元素做同样的工作,从第一对开始到最后一对结束,最后的元素应该会是最大的数。...php header("Content-type:text/html;charset=utf-8"); // 性能最差的冒泡排序方法 function maopao1($arr)...arr[$k+1] = $tmp; } } } return $arr; } // 性能最好的冒泡排序方法...:"; foreach ($arr as $k => $val) { echo $val.' '; } echo "方法一排序后:"; $arr...= maopao1($arr); foreach ($arr as $k => $val) { echo $val.' '; } echo "方法二排序后
该算法可以认为是插入排序的一个变种,称为二分查找排序。....桶排序 思路分析 假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排) 算法描述 设置一个定量的数组当作空桶; 遍历输入数据...,因为网上多数的PHP代码感觉不合规范,其中的insertSort()为借用的文中所写的插入排序 通过测试发现,此方法耗时比countingSort()要长好多,此处仅做参考不做推荐。...计数排序不是比较排序,排序的速度快于任何比较排序算法。...sort()函数. 【4】参考文章 十大经典排序算法总结(JavaScript描述)【推荐】 十大经典排序算法PHP实现教程(注意底部的文章目录) PHP 的几种排序算法的比较 【5】提示 本文主要为了学习而生
许多人都说算法是程序的核心,算法的好坏决定了程序的质量。作为一个初级phper,虽然很少接触到算法方面的东西。但是对于基本的排序算法还是应该掌握的,它是程序开发的必备工具。...这里介绍冒泡排序,插入排序,选择排序,快速排序四种基本算法,分析一下算法的思路。 前提:分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序。...冒泡排序 思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。...即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。...除非特别声明,PHP100新闻均为原创或投稿报道,转载请注明作者及原文链接 原文地址: http://www.php100.com/html/dujia/2015/0210/8604.html
领取专属 10元无门槛券
手把手带您无忧上云