快速排序是对冒泡排序的一种改进。他的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行快速排序,整个排序过程可以递归进行,以达到整个序列有序的目的。相信你真正理解这两个排序算法后,在以后的数组排序中都是迎刃有余。<?php

$arr = array(3,2,4,5,1,8,7,6,9);

quick_sort($arr);

bubble_sort($arr);

function bubble_sort($arr){

$num=count($arr);

for ($i=0; $i

for ($j=0; $j

if($arr[$j]>$arr[$j+1]){

$temp=$arr[$j+1];

$arr[$j+1]=$arr[$j];

$arr[$j]=$temp;

}

}

}

return $arr;

}

function quick_sort($arr) {

//先判断是否需要继续进行

$length = count($arr);

if($length <= 1) {

return $arr;

}

//如果没有返回,说明数组内的元素个数 多余1个,需要排序

//选择一个标尺

//选择第一个元素

$base_num = $arr[0];

//遍历 除了标尺外的所有元素,按照大小关系放入两个数组内

//初始化两个数组

$left_array = array();//小于标尺的

$right_array = array();//大于标尺的

for($i=1; $i

if($base_num > $arr[$i]) {

//放入左边数组

$left_array[] = $arr[$i];

} else {

//放入右边

$right_array[] = $arr[$i];

}

}

//再分别对 左边 和 右边的数组进行相同的排序处理方式

//递归调用这个函数,并记录结果

$left_array = quick_sort($left_array);

$right_array = quick_sort($right_array);

//合并左边 标尺 右边

return array_merge($left_array, array($base_num), $right_array);

}

php递归实现冒泡排序,PHP冒泡排序、快速排序算法相关推荐

  1. c语言数字排列和算法思路,冒泡排序、快速排序算法理解及C程序实现

    前言:关于 快速排序算法的相关理解,本文借鉴了 啊哈磊 老师的<常用排序--快速排序> ,在此向作者 致敬,写的挺好. 目录 一.冒泡排序 二.快速排序 三.小结 一.冒泡排序 冒泡排序是 ...

  2. MATLAB实现冒泡排序算法和快速排序算法

    冒泡算法(Bubble Sort)--一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字母从Z到A)错误就把他们交换过来.走访元素 ...

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

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

  4. 带哨兵的冒泡排序_冒泡排序与快速排序

    一.冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法.它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小.首字母从A到Z)错误就把他们 ...

  5. 9个元素换6次达到排序序列_原创系列 |冒泡排序提升为快速排序,都发生了什么?...

    「Python与算法社区」 第 310 篇原创 " 1 你会学到什么? " 彻底弄明白常用的排序算法的基本思想,算法的时间和空间复杂度,以及如何选择这些排序算法,确定要解决的问题的 ...

  6. day02--java基础编程:变量,数据类型,类型转换,运算规则,运算符,分支结构,循环(随机数),方法,重载,可变参数,递归,数组,冒泡排序

    1 Day02–变量+数据类型+类型转换 1.1 前言 1.1.1 标识符 可以简单的理解为一个名字.在Java中,我们需要标识代码的很多元素,包括包名.类名.方法.字段.变量等.我们选择的名称就称为 ...

  7. day02--java基础编程:变量,数据类型,类型转换,运算规则,Scanner,运算符,分支结构,循环(随机数),方法,重载,可变参数,递归,数组,冒泡排序

    1 Day02–变量+数据类型+类型转换 1.1 前言 1.1.1 标识符 可以简单的理解为一个名字.在Java中,我们需要标识代码的很多元素,包括包名.类名.方法.字段.变量等.我们选择的名称就称为 ...

  8. C语言随机生成成绩排序,如何实现以下功能给出1000个通过随机数生成的数据,分别用直接插入排序法、冒泡排序法、快速排序法进行排序...

    已结贴√ 问题点数:20 回复次数:2 如何实现以下功能给出1000个通过随机数生成的数据,分别用直接插入排序法.冒泡排序法.快速排序法进行排序 #include #include #include ...

  9. 使用python完成冒泡排序_python 冒泡排序优化,用递归实现冒泡排序

    下面代码是冒泡排序逐步优化,写代码用递归也可以实现.什么冒泡排序就不写了,百度解释很详细.对理论不是很感兴趣. #!/usr/bin/env python3 # -*- coding: utf-8 - ...

  10. vb冒泡排序法流程图_VB算法-冒泡排序教案

    1 冒泡排序教学设计 班级:高一一班 授课教师:袁海军 一. 教案背景 模块:算法与程序设计 班级:高一( 1 )班 课时数: 1 课时 所用教材:华师大版<算法与程序设计> 教 师:袁海 ...

最新文章

  1. 五种常见的PHP设计模式
  2. 内核功能导致重启_诊断修复 TiDB Operator 在 K8s 测试中遇到的 Linux 内核问题
  3. 1000万贷款三年,到期一次性偿还1500万,这个利息算不算高?
  4. jeecg 如何重新加载当前渲染tab页面
  5. anaconda中自带的qtdesigner做界面
  6. 分布式与系统架构的演变
  7. Kettle环境搭建及使用(数据迁移)
  8. Javascript模块化编程:require.js的用法
  9. 计算机学院指导报告,重庆大学计算机学院论文指导讲座圆满结束
  10. java 替换所有中文_java 替换中文
  11. CSDN免费获得积分和直接获取下载码的方法,亲测有效
  12. GNS3 添加思科交换机
  13. 记录日常收支,查看每个账户收支明细
  14. Maven的安装和环境变量配置
  15. 单片机一键开关机电路
  16. 高性能计算专业应用软件大观
  17. python怎么爬取电影海报_Python3 爬取时光网电影海报和电影数据
  18. python3d动图_如何在Python上制作3D图形的动画
  19. Win10卸载KB5014699补丁教程
  20. 江南大学计算机科学复试题目,2019江南大学计算机考研初试科目、参考书目、复试线...

热门文章

  1. 8a 中断 传感器采集_加速度传感器的安装,你get了吗
  2. css如何调整红心样式_在JavaScript应用程序中包含CSS的多种方法「渡一」
  3. 如何把表格做成源代码_他来了,他来了,文字、表格、公式图片识别神器V0.1测试版...
  4. Spring基于Annotation实现事务管理
  5. 安装引导黑屏_给电脑安装系统老是装不上,重启就黑屏,原来是这项设置在作怪!...
  6. R语言基础入门(10)之矩阵和数组
  7. 【蓝桥杯每日一练】 汉诺塔
  8. android slidingdrawer 方向,如何使Android SlidingDrawer从左侧滑出?
  9. e.printstacktrace()为什么没有输出信息_不输入内容,能不能直接输出内容?
  10. php jsonerrorsyntax,php – json_decode返回JSON_ERROR_SYNTAX,但在线格式化程序表示JSON可以...