原理:快速排序使用分治策略来把待排序数据序列分为两个子序列,具体步骤为:

(1)从数列中挑出一个元素,称该元素为“基准”。

(2)扫描一遍数列,将所有比“基准”小的元素排在基准前面,所有比“基准”大的元素排在基准后面。

(3)通过递归,将各子序列划分为更小的序列,直到把小于基准值元素的子数列和大于基准值元素的子数列排序。

//快速排序(数组排序)
function QuickSort($arr){$num = count($arr);$l=$r=0;for($i=1;$i<$num;$i++){if($arr[$i] < $arr[0]){$left[] = $arr[$i];$l++;}else{$right[] = $arr[$i];$r++;}}if($l > 1){$left = QuickSort($left);}$new_arr = $left;$new_arr[] = $arr[0];if($r > 1){$right = QuickSort($right);}for($i=0;$i<$r;$i++){$new_arr[] = $right[$i];}return $new_arr;
}

PHP面试题:使用PHP描述快速排序算法,对象可以是一个数组?相关推荐

  1. 使用php描述快速排序算法,PHP描述冒泡排序和快速排序算法

    使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组. 写一个二维数组排序算法函数,能够具有 ...

  2. 典型的Top K算法_找出一个数组里面前K个最大数

    原文 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入 ...

  3. 【JD算法题】定义一个数组的权值为,该数组最大值的出现次数。求长度为n且每个元素范围都在[1,n]的所有数组的权值之和。

    Problem 小红定义一个数组的权值为,该数组最大值的出现次数. 例如[2,3,3,4]的权值为1,[2,3,3,3]的权值为3. 小红想知道,长度为n,且每个元素范围都在[1,n]的数组(显然有n ...

  4. 面试题:在O(1)空间复杂度范围内对一个数组中前后连段有序数组进行归并排序...

    题目:数组al[0,mid-1]和al[mid,num-1]是各自有序的,对数组al[0,num-1]的两个子有序段进行merge,得到al[0,num-1]整体有序.要求空间复杂度为O(1).注:a ...

  5. Python与Matlab算法学习一文通(快速排序算法)(更新中)

    想利用一些空余时间学一学python与matlab,与同学建立不知道能坚持多久的学习联盟,每周一部分题目,利用一周时间完成原理文档与程序编写.由于主要研究方向为其他方向,因此只会利用很少的空闲时间来学 ...

  6. 快速排序算法的简短描述

    一个数组,比如: [3,9,2,1,5,4] 取出某个元素(比如第一个元素3); 将除3之外的元素元素分为两组,小于(less than)等于(equal)3的为一组,[1,2],记为lt,大于(gr ...

  7. 面试题库 之 数据结构与算法 100题

    1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表. 要求不能创建任何新的结点,只调整指针的指向. 10 / \ 6 14 / \ / \ 4 8 ...

  8. 【算法】快速排序算法的编码和优化

    参考资料 <算法(第4版)>          - - Robert Sedgewick, Kevin Wayne <啊哈! 算法>              - - 啊哈磊 ...

  9. Quick Sort 快速排序算法

    Table of Contents 前言 算法步骤 选取枢纽元 分割数组 算法实现 小数组和插入排序 结语 前言 快速排序算法应该是常见的排序算法中使用的最多的一个,很多语言内置的排序算法都间接或直接 ...

最新文章

  1. 微软宣布12月15日关闭开源软件托管平台CodePlex
  2. javaml_一些基于Java的AI框架:Encog,JavaML,Weka
  3. 硬核|定时任务的10种实现方案,满足你的不同需求!
  4. mysql capi函数详解_技术分享|MySQLCAPI参数MYSQL_OPT_READ_TIMEOUT的一些行为分析
  5. mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
  6. (转)Rust: 在vscode配置 Rust 开发环境
  7. 台式计算机如何连接网络,台式机如何去连接网络
  8. 最优化方法笔记-线性规划(大M法与两阶段法)
  9. Python实现CART决策树
  10. latex中文小标题_latex定制标题样式
  11. Chrome快捷键大全:Chrome窗口和标签页快捷键、功能快捷键、网页快捷键
  12. zoj3987—Numbers(贪心)
  13. linux操作系统adsl 上网设置,Linux操作系统上ADSL拨号上网的方法详解
  14. python给pdf右上角盖章
  15. 华三防火墙h3cf100配置双宽带_华三防火墙H3 F100基本配置说明.doc
  16. ios 导航条消失 navigationBar.hidden 和 navigationBarHidden 区别
  17. 数据结构c语言版第三版实验四答案,数据结构(C语言版)第三四章习题答案
  18. ESP8266+0.96OLED驱动显示(I2C)
  19. AcWing 692. G巴士计数 差分+前缀和
  20. 基于Android的股票交易软件,基于Android的股票交易系统的融资融券交易子系统的设计与实现...

热门文章

  1. linux 低功耗运行,关于Linux的快速启动(fastboot)和低功耗(low power)的学习记录...
  2. 【Hadoop应用案例】针对运营商支付业务的渠道推荐系统
  3. 算法优化:动态规划加速,货物运输问题,四边形不等式, 从O(n^2)到O(n^3)
  4. leetcode-3-无重复字符的最长子串
  5. 组件 DataList 和 ObjectDataSource
  6. 机器学习(数据挖掘十个重要算法)
  7. php将代码上传至服务器步骤
  8. CocoaPods的使用
  9. 如果使用StateServer或SQLServer,会遇到的问题。。。。
  10. cp1 项目管理概述