算法学习之路 | 快速排序[Php]
2023-06-13 09:15:15 时间
思路
- 给定一个数组,内容都为数字
- 外层函数
- 若传入数组只有一个元素,则直接返回当前数组
- 取数组第一个值为中间值,循环判断其余值与中间值的大小比较
- 大于中间值存入当前右数组
- 小于中间值存入当前左数组
- 递归将循环判断结束得到的左右数组再执行取数组第一个值为中间值,循环判断其余值与中间值的大小比较的操作
- 由上至下循环分隔数组为左右,最后返回拼接的数组(一个元素时左右拼接上仍为该元素)
- 由下至上从一个元素的数组开始拼接拼接好左右数组的数组
- 由下至上结束递归时将两个有序数组拼接
- 得到一个升序数组
代码
<?php
$array = array(1,2,5,3,7,1,8);
function quick_sort($array){
if(count($array) <= 1){ //数组只有一个元素,直接返回该数组
return $array;
}
$left = array();
$right = array();
$pivot = $array[0];
for($i = 1;$i < count($array);$i++){ //当前数组第一位为中间值
if($array[$i] > $pivot){ //左右数组存放比中间值小或大的数组成的数组
$right[] = $array[$i];
}else{
$left[] = $array[$i];
}
}
$left = quick_sort($left); //左数组不停再隔分直到满足只有一个元素
/*
quick_sort( quick_sort(quick_sort( ... )) )
递归就是从外括号到内括号直到不满足条件,再从内括号到外括号执行
最内层将直接返回(只有一个元素)
每次递归内部都有两个递归(左右)
1,2,3
(1 | 2,3)
(1) | (2 | 3)
(1) | (2) | (3)
*/
$left[] = $pivot;
return array_merge($left,quick_sort($right));
}
$array = quick_sort($array);
var_dump($array);
?>
相关文章
- PHP常见面试题_php算法面试题及答案
- php最常见最经典的算法题都在这里了
- 算法学习之路 | 归并排序[Php]
- PHP DFA算法实现敏感词过滤包 php-dfa-sensitive
- 用PHP实现URL转换短网址的算法
- 学习MySQL还是PHP?(先学php还是mysql)
- PHP与MySQL无缝对接,构建强大数据库应用(php整合mysql)
- PHP连接MySQL数据库指南(php连接到mysql)
- 快速拥抱Web开发:PHP与MySQL(php和mysqlweb开发)
- PHP在Linux下的应用突破之路(php使用linux)
- PHP如何使用Redis连接: 代码实例(php连接redis代码)
- 解决方案PHP 解决 MySQL 乱码问题的好办法(mysql乱码php)
- 教你如何用PHP获取MySQL数据库中的数据(php获取mysql数据)
- PHP检测MySQL性能的方法(php检测mysql)
- PHP操作MySQL数据库详解,快速学习调用方法(php怎么调用mysql)
- PHP读取MSSQL数据库:实现简单快捷的网页查询(php读取mssql网页)
- 深入学习Linux下的PHP编程技巧(linux下php编程)
- Linux下编译安装PHP:一步步走向稳定性(linux编译安装php)
- 一步一步学习PHP(4)php函数补充2
- PHP学习笔记之二php入门知识
- PHP和Mysqlweb应用开发核心技术第1部分Php基础-1开始了解php
- php入门学习知识点二PHP简单的分页过程与原理
- php入门学习知识点三PHP上传
- php入门学习知识点七PHP函数的基本应用
- php数据结构算法(PHP描述)简单选择排序simpleselectionsort
- PHP第一节php简介
- php数据结构与算法(PHP描述)快速排序quicksort
- PHP学习笔记IIS7下安装配置php环境
- 基于php常用函数总结(数组,字符串,时间,文件操作)
- PHP随机生成随机个数的字母组合示例