冒泡排序:

function bubbleSort($array){ $len=count($array);//该层循环控制 需要冒泡的轮数for($i=1;$i<$len;$i++){ //该层循环用来控制每轮 冒出一个数 需要比较的次数for($k=0;$k<$len-$i;$k++){if($array[$k]>$array[$k+1]){$tmp=$array[$k+1];$array[$k+1]=$array[$k];$array[$k]=$tmp;}}}return $array;
}

快速排序:

function quickSort($array){if (count($array) <= 1) return $array;$key=$array[0];$left_arr=array();$right_arr=array();for($i=1;$i<count($array);$i++){if($array[$i]<=$key){$left_arr[]=$array[$i];}else{$right_arr[]=$array[$i];} }$left_arr=quickSort($left_arr);$right_arr=quickSort($right_arr);return array_merge($left_arr,array($key),$right_arr);
}

选择排序:

function selectSort($array) {//双重循环完成,外层控制轮数,内层控制比较次数$len=count($array);for($i=0; $i<$len-1; $i++) {//先假设最小的值的位置$p = $i; for($j=$i+1; $j<$len; $j++) {//$array[$p] 是当前已知的最小值if($array[$p] > $array[$j]) {//比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。$p = $j;}}//已经确定了当前的最小值的位置,保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则位置互换即可。if($p != $i) {$tmp = $array[$p];$array[$p] = $array[$i];$array[$i] = $tmp;}}return $array; //返回最终结果
}

插入排序:

function insertSort($array) {$len=count($array); for($i=1, $i<$len; $i++) {$tmp = $array[$i];//内层循环控制,比较并插入for($j=$i-1;$j>=0;$j--) {if($tmp < $array[$j]) {//发现插入的元素要小,交换位置,将后边的元素与前面的元素互换$array[$j+1] = $array[$j];$array[$j] = $tmp;} else {//如果碰到不需要移动的元素,由于是已经排序好是数组,则前面的就不需要再次比较了。break;}}}return $array;
}

二叉树(二分法)排序:

/**
* 递归方法实现二分查找法.
* @param Array数组
* @param low 数组第一位置
* @param high 最高
* @param k 要查找的值.
* @return 返回值. */
function binSearch($array, $low, $high, $k){if ($low <= $high){$mid = intval(($low+$high)/2);if ($array[$mid] == $k){return $mid;}elseif ($k < $array[$mid]){return binSearch($array, $low, $mid-1, $k);}else{return binSearch($array, $mid+1, $high, $k);}}return -1;
}

转载于:https://www.cnblogs.com/qhorse/p/5429932.html

[PHP]基本排序(冒泡排序、快速排序、选择排序、插入排序、二分法排序)相关推荐

  1. 数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并

    数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并 第一章 冒泡排序 [1]Bubble_Sort.c 第二章 快速排序 [1]quick_sort.c 第三章 大数据 ...

  2. 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...

    掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...

  3. js实现冒泡排序,快速排序,选择排序

    用js冒泡排序,快速排序,选择排序 1.冒泡排序 冒泡排序是比较经典的排序方法,是一种用时间换空间的排序方法.我总结了一下它的特点:(1)它的时间复杂度是:(2)每一趟相邻元素两两比较完毕就会产生最值 ...

  4. iOS swift 选择排序 冒泡排序 快速排序

    返回上级目录:iOS 算法题 三大经典排序 | 冒泡排序,选择排序,快速排序 - 知乎 文章目录 1.选择排序 2.冒泡排序 3.快速排序 1.选择排序 //选择排序 func rankSelect( ...

  5. 数据结构(八):排序 | 插入排序 | 希尔排序 | 冒泡排序 | 快速排序 | 简单选择排序 | 堆排序 | 归并排序 | 基数排序 | 外部排序 | 败者树 | 置换-选择排序 | 最佳归并树

    文章目录 第八章 排序 一.排序的基本概念 (一)什么是排序 (二)排序的应用 (三)排序算法的评价指标 (四)排序算法的分类 (五)总结 二.插入排序 (一)算法思想 (二)算法实现 (三)算法效率 ...

  6. 直接插入排序 希尔排序 冒泡排序 快速排序 直接选择排序 堆排序 归并排序 基数排序的算法分析和具体实现 ...

    排序分为内部排序和外部排序 内部排序是把待排数据元素全部调入内存中进行的排序. 外部排序是因数量太大,把数据元素分批导入内存,排好序后再分批导出到磁盘和磁带外存介质上的排序方法. 比较排序算法优劣的标 ...

  7. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  8. 简单排序——冒泡排序,选择排序,插入排序,对象排序

    2019独角兽企业重金招聘Python工程师标准>>> 1)冒泡排序 package sort; /**  * 冒泡排序,每次把数组最大值送到未排序部分的最末端  * @author ...

  9. 王道八大排序:直接插入排序 折半插入排序 希尔排序 冒泡排序 快速排序 归并排序 基数排序

    文章目录 1.插入排序 1.1直接插入排序 1.2折半插入排序 1.3希尔排序 2.交换排序 2.1冒泡排序 2.2快速排序 3.选择排序 3.1简单选择排序 3.2堆排序 4.归并排序 5.基数排序 ...

  10. 冒泡排序+快速排序+选择排序(图解)

    冒泡排序 原理 假设有10个数,第一轮循环,第一个数和第二个数比较,如果第一个数大,第一个数和第二个数交换位置,否则不动:接着第二个数和第三个数比较,如果第二个数大,第二个数和第三个数交换位置,否则不 ...

最新文章

  1. ios开发国外视频教程(有翻译)
  2. 1.7 时间延时器和类的别名
  3. 计算机语言 时间,甲骨文将ISO日期到计算机的语言环境日期/时间
  4. 【PAT甲级 LinkedHashMap】1041 Be Unique (20 分) Java、C++版
  5. vasp服务器中断,求助VASP能带计算的中断原因
  6. YOLOv1-YOLOv4
  7. 删除“ie8左侧收藏夹图标(黄星星)”及“恢复”的方法
  8. C++ 判断字符串是否全是数字
  9. 以下属于4nf的分解为_数据库原理·模拟试卷及答案(1)
  10. 将图的广度优先遍历在邻接矩阵和邻接表存储结构上分别实现_《青岛大学-王卓-数据结构》B站学习...
  11. MapReduce框架Hadoop应用(一)
  12. fraction类的创建java_设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。(Java语言)...
  13. 解决搭载M1芯片的Mac上安装犀牛Rhinoceros 7 for Mac的安装教程
  14. access vba代码全部丢失_Access2016由于无法读取数据库中所含的VBA工程,因此无法打开此数据库。只有先删除VBA工程,然后才能打开数据库...
  15. 关于Chrome浏览器升级到80版本后受影响的场景以及解决方案
  16. java设置短信验证码过期时间_实现短信验证码有效时间
  17. “扣哒杯” AI世青赛全国决赛落幕 集体奖和一等奖附加赛名单揭晓
  18. 树链剖分 --算法竞赛专题解析(30)
  19. 秒数转换为天小时分钟秒的格式
  20. 辉芒微IO单片机FT60F11F-MRB

热门文章

  1. PCL学习(4.5)——点云对象的两种定义方式的区别与转换
  2. 7-71 爬动的蠕虫 (15 分)
  3. concat mysql sql注入_Mysql中用concat函数执行SQL注入查询的方法
  4. gauge 运行其他spec_Gem5(SE模式)上运行SPEC2017教程
  5. github上传的项目代码语言类型修改
  6. MySQL常用存储引擎
  7. 前端错误捕获终级方案
  8. Mongodb 集群实战
  9. pip软件包安装 + Anaconda软件库安装 教程
  10. linux修改文件权限和用户组管理小结