【php使用递归与迭代实现快速排序示例】教程文章相关的互联网学习教程文章

PHP 快速排序算法详解【图】

概念 这里借用百度百科的一张图来,非常形象:快速排序算法是对冒泡算法的一个优化。他的思想是先对数组进行分割, 把大的元素数值放到一个临时数组里,把小的元素数值放到另一个临时数组里(这个分割的点可以是数组中的任意一个元素值,一般用第一个元素,即$array[0]),然后继续把这两个临时数组重复上面拆分,最后把小的数组元素和大的数组元素合并起来。这里用到了递归的思想。 PHP实现代码如下: /* 快速排序 */ function...

php简单实现快速排序的方法

本文实例讲述了php简单实现快速排序的方法。分享给大家供大家参考。具体实现方法如下: function quicksort($seq) {if(!count($seq)) return $seq;$k = $seq[0];$x = $y = array();for($i=count($seq); --$i;){if($seq[$i] <= $k){$x[] = $seq[$i];}else{$y[] = $seq[$i];}}return array_merge(quicksort($x),array($k),quicksort($y)); }希望本文所述对大家的php程序设计有所帮助。

php关联数组快速排序的方法

本文实例讲述了php关联数组快速排序的方法。分享给大家供大家参考。具体如下: <?phpfunction qsort($a,$f) {qsort_do(&$a,0,Count($a)-1,$f);}function qsort_do($a,$l,$r,$f) {if ($l < $r) {qsort_partition(&$a,$l,$r,&$lp,&$rp,$f);qsort_do(&$a,$l,$lp,$f);qsort_do(&$a,$rp,$r,$f);}}function qsort_partition($a,$l,$r,$lp,$rp,$f) {$i = $l+1;$j = $l+1;while ($j <= $r) {if ($f($a[$j],$a[$l])) {$tmp = $a[$j];$a[$j] ...

php冒泡排序与快速排序实例详解

本文实例分析了php冒泡排序与快速排序算法。分享给大家供大家参考,具体如下: $a=array(3,8,1,4,11,7); print_r($a); $len = count($a); //从小到大 for($i=1;$i<$len;$i++) { for($j=$len-1;$j>=$i;$j--) if($a[$j]<$a[$j-1]) {//如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了$x=$a[$j];$a[$j]=$a[$j-1];$a[$j-1]=$x; } } print_r($a);j //另一种方法 从小到大 $b=array(4,3,8,9,2,1); $len=count($b); ...

php快速排序原理与实现方法分析

本文实例讲述了php快速排序方法。分享给大家供大家参考,具体如下: <?php $n = array(13,14,55,10,54,2,79,106,89,90,22,60,111,77777,-110,-10,123); function partition($n,$left,$right) {global $n;$pivot = $n[$left];$lo=$left;$hi=$right+1;while($lo+1!=$hi) {if($n[$lo+1]<$pivot)$lo++;else if($n[$hi-1]>$pivot)$hi--;else{$t=$n[$lo+1];$n[$lo+1]=$n[$hi-1];$n[$hi-1]=$t;$lo++;$hi--;}}$n[$left]=$n[$lo];$n[$lo]=$p...

php项目开发中用到的快速排序算法分析

本文实例讲述了php项目开发中用到的快速排序算法。分享给大家供大家参考,具体如下: 实际上在,做web开发,比较少遇到使用一些算法之类的,毕竟不是做搜索引擎,也不是写底层(比如写个类似于mysql这样的数据库,里面需要自己实现排序算法),另外,每种语言,比如java,php都或多或少已经封装好排序函数给程序员使用。比如有个共识,大家做web开发的基本都明白,业务逻辑多比较简单,不是很复杂的业务逻辑。我们作为web开发的程序员...

PHP快速排序quicksort实例详解

本文实例讲述了PHP快速排序quicksort。分享给大家供大家参考,具体如下: quicksort 在快速排序算法中,使用了分治策略。首先把序列分成两个子序列,递归地对子序列进行排序,直到整个序列排序结束。(即一分为二的思想) 步骤如下: 在序列中选择一个关键元素做为轴; 对序列进行重新排序,将比轴小的元素移到轴的前边,比轴大的元素移动到轴的后面。在进行划分之后,轴便在它最终的位置上; 递归地对两个子序列进行重新排序:含有...

PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】

php三种基础算法:冒泡,插入和快速排序法 $array = array(2,3,5,6,9,8,1);//冒泡排序思想,前后元素比较 function sort_bulldle($array){$num = count($array);for($i=0; $i<$num; $i++){$tmp = $array[$i];for ($j=$i-1; $j>=0; $j--) {if ($tmp < $array[$j]) {$arr[$j+1] = $arr[$j];$arr[$j] = $tmp;} else {break;}}}return $array; }//插入排序思想,就是从第二个元素开始,到最后一个元素都是这个需要排序的元素 function ...

PHP递归实现快速排序的方法示例

本文实例讲述了PHP递归实现快速排序的方法。分享给大家供大家参考,具体如下: 首先我们要理解一下快速排序的原理:找到当前数组中的任意一个元素(一般选择第一个元素),作为标准,新建两个空数组,遍历整个数组元素,如果遍历到的元素比当前的元素要小,那么就放到左边的数组,否则放到右面的数组,然后再对新数组进行同样的操作。 不难发现,这里符合递归的原理,所以我们可以用递归来实现。 使用递归,则需要找到递归点和递归...

PHP排序算法之快速排序(Quick Sort)及其优化算法详解

本文实例讲述了PHP排序算法之快速排序(Quick Sort)及其优化算法。分享给大家供大家参考,具体如下: 基本思想: 快速排序(Quicksort)是对冒泡排序的一种改进。他的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行快速排序,整个排序过程可以递归进行,以达到整个序列有序的目的。 基本算法步骤: 举个栗子: 假如现在待排序记录是: 6 ...

PHP快速排序算法实例分析

本文实例讲述了PHP快速排序算法。分享给大家供大家参考,具体如下: 快速排序:在无序的数组$data中,选择任意一个值作为对比值,定义i为头部检索索引,j为尾部检索索引, 算法步骤: (1)初始化对比值$value=$data[0],$i=1,$j=count($data)-1 (2)首先从尾部开始检索,判断$data[$j]是否小于$value,若不小于则$j--,继续检索,直到找到比$value小的坐标 (3)这时开始头部检索,判断$data[$i]是否大于$value,若不大于则$i++...

PHP快速排序算法实现的原理及代码详解【图】

算法原理 下列动图来自五分钟学算法,演示了快速排序算法的原理和步骤。步骤: 从数组中选个基准值将数组中大于基准值的放同一边、小于基准值的放另一边,基准值位于中间位置递归的对分列两边的数组再排序代码实现 function quickSort($arr){$len = count($arr);if ($len <= 1) {return $arr;}$v = $arr[0];$low = $up = array();for ($i = 1; $i < $len; ++$i) {if ($arr[$i] > $v) {$up[] = $arr[$i];} else {$low[] = $arr[$i];}...

PHP快速排序算法实现的原理及代码介绍【代码】【图】

本篇文章给大家带来的内容是关于PHP快速排序算法实现的原理及代码介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。算法原理下列动图来自五分钟学算法,演示了快速排序算法的原理和步骤。步骤:从数组中选个基准值将数组中大于基准值的放同一边、小于基准值的放另一边,基准值位于中间位置递归的对分列两边的数组再排序代码实现function quickSort($arr) {$len = count($arr);if ($len <= 1) {return $arr;}$v...

【PHP面试】面试必问的两个简单排序算法讲解:冒泡排序和快速排序【代码】【图】

一般应对面试,我们无可厚非的去刷下面试题。对于PHP开发者来说,除了要熟悉自己所做的项目,还有懂的基本的算法。下面来分享下PHP面试中常会问到的算法:冒泡排序和快速排序。 冒泡排序:一一对比排序基本思想:重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。 图解: 1.第一次:拿着...

php 二维数组快速排序算法的实现代码

php 二维数组快速排序算法的实现代码 二维数组排序算法与一维数组排序算法基本理论都是一样,都是通过比较把小的值放在左变的数组里,大的值放在右边的数组里在分别递归。实例代码: <?php class Bubble { private function __construct() { } private static function sortt($data) { if (count ( $data ) <= 1) { return $data; } $tem = $data [0][score]; $leftarray = array (); $rightarray = array (); for($i = 1; $i < c...