快速排序:PHP 快速排序


  1. <?php 
  2. //Quick Sort 
  3. function quickSort(array $array){ 
  4. static $run = 0; 
  5. $len = count($array); 
  6. if($len <= 1) return $array; 
  7. $arrleft=array(); 
  8. $arrright=array(); 
  9. $flag = $array[0]; 
  10. for($i=1;$i<$len;$i++){ 
  11. if($array[$i]<=$flag){ 
  12. $arrleft[]=$array[$i]; 
  13. }else{ 
  14. $arrright[] = $array[$i]; 
  15. $arrleft = quickSort($arrleft); 
  16. $arrright = quickSort($arrright); 
  17. $run++; 
  18. return array_merge($arrleft,array($flag),$arrright); 
  19. $data= array(10,12,43,32,123,12); 
  20. $newarr = quickSort($data); 
  21. print_r($newarr); 
  22. ?>  

本文链接http://www.cxybl.com/html/wlbc/Php/20130319/37248.html

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索html
, http
, 快速排序
, 排序
, 链接
, 快速
php快速排序
快速排序算法、快速排序 java、快速排序 c++、快速排序时间复杂度、冒泡排序,以便于您获取更多的相关知识。

时间: 2024-09-08 22:22:10

快速排序:PHP 快速排序的相关文章

c 快速排序 堆栈-快速排序遇到了堆栈问题

问题描述 快速排序遇到了堆栈问题 源代码://快速排序 #include #include #include int main(){ int Kspx(int b,int c[]);//声明 int a[1000];int n,m; scanf("%d",&n);//确定需要排序的数的数量 for(m=0;m<n;m++){//给数组赋值 scanf("%d",&a[m]); } Kspx(n,a);//调用 for(m=0;m<n;m+

【万字总结】快速排序详解与各种线性时间排序对比

什么是快速排序 快速排序简介 快速排序(英文名:Quicksort,有时候也叫做划分交换排序)是一个高效的排序算法,由Tony Hoare在1959年发明(1961年公布).当情况良好时,它可以比主要竞争对手的归并排序和堆排序快上大约两三倍.这是一个分治算法,而且它就在原地排序. 所谓原地排序,就是指在原来的数据区域内进行重排,就像插入排序一般.而归并排序就不一样,它需要额外的空间来进行归并排序操作.为了在线性时间与空间内归并,它不能在线性时间内实现就地排序,原地排序对它来说并不足够.而快速排序

数据结构和算法13 之快速排序

 上一节我们学习了一个高级排序算法:希尔排序,这一节我们将讨论另一个高级排序算法:快速排序.         快速排序算法是最流行的排序算法,因为有充足的理由,在大多数情况下,快速排序都是最快的,执行时间为O(NlogN)级(这只是对内部排序或者说随机存储器内的排序而言,对于在磁盘文件中的数据进行的排序,其他的排序算法可能更好).快速排序本质上通过一个数组划分为两个子数组,然后递归地调用自身为每一个子数组进行快速排序来实现的,即算法分为三步:         1. 把数组或者子数组划分为左边(较

快速排序的算法思想及Python版快速排序的实现示例_python

快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). 1.分治法的基本思想 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题.递归地解这些子问题,然后将这些子问题的解组合为原问题的解. 2.快速排序的基本思想 设当前待排序的无序区为R[low..high],利用分治法可将快速排序的基本思想描述为: (1)分解: 在R[low..high]中任选一个记录作为基准(

[C/C++基础知识] 一篇就让你彻底搞懂qsort快速排序的文章

        最近在做LeetCode的题目.面试和笔试后发现经常考察快速排序的知识.通过这篇文章介绍,能让你彻底的了解和学习快排,主要从一下三个部分进行介绍:         一.C语言实现qsort快速排序         二.快速排序的原理及手写快排源码         三.LeetCode关于Two Sum的快排实现 参考文献:        <算法分析与设计>关于分治法那章内容         如何利用C语言中的qsort库函数实现快速排序 - by:stpeace        

php快速排序原理与实现方法分析_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+

C#递归算法之快速排序_C#教程

上两片第归算法学习: 1)递归算法之分而治之策略 2)递归算法之归并排序 上一篇学习中介绍了了递归算法在排序中的一个应用:归并排序,在排序算法中还有一种算法用到了递归,那就是快速排序,快速排序也是一种利用了分而治之策略的算法,它由C.A.R发明,它依据中心元素的值,利用一系列递归调用将数据表划分成越来越小的子表.在每一步调用中,经过多次的交换,最终为中心元素找到最终的位置.与归并算法不同,快速排序是就地排序,而归并排序需要把元素在临时向量中拷贝,下面通过对以下向量进行排序来理解和加深快速排序算法

Go语言展现快速排序算法全过程的思路及代码示例_Golang

快速排序算法快速排序是一个递归的思想,首先选择一个数作为基数,把数组中小于它的数放在它的左边,把大于它的数放在它的右边,然后对左右两边的数递归进行排序. 算法的关键部分是实现数组的划分,即怎么把数组的元素划分成两部分,使得左边的数比基数小,右边的数比基数大.划分有许多不同的实现方法,这里主要使用单向扫描的方法,后面再稍微介绍双向扫描的方法. 选择最右边的数字作为基数.使用一个变量j记录当前左边数字(比基数小的数)的最右的下标值.然后使用变量i从左到右遍历数组,如果a[i]比基数小,说明a[i]属

Swift实现快速排序算法的代码示例_Swift

思想 快速排序作为分治代表,通常实现由三步 1.数据中选择一个元素作为"基准"(pivot),通常选取最后一个元素: 2.分区(partition) 所有小于"基准"的元素,都移到"基准"的左边:所有大于"基准"的元素,都移到"基准"的右边.分区操作结束后,基准元素所处的位置就是最终排序后它的位置. 3.对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为