php常见排序
public function actionQuickSort()
{
$arr = ['5', '4', '3', '2', '1', '0'];
$quickRes = $this->quickSortInner($arr);
$selectRes = $this->selectSort($arr);
$insertRes = $this->insertSort($arr);
var_dump($insertRes);
} private function quickSortInner($arr)
{
if(!is_array($arr)){
return false;
}
$length = count($arr);
if($length <= 1){
return $arr;//快速排序的出口 判断数组的长度
}
$left = array(); //左数组
$right = array(); //右数组
for($i = 0;$i < $length;$i++){
if($arr[$i] < $arr[0]){
$left[] = $arr[$i];
}else{
$right[] = $arr[$i];
}
}
$left = $this->quickSortInner($left);
$right = $this->quickSortInner($right);
return array_merge($left, $right);
} private function selectSort($arr)
{
if(!is_array($arr)){
return false;
} $length = count($arr); if($length < 1){ return false; } for($i = 0;$i < $length;$i++){ $m = $i; for($j=$i+1;$j<$length;$j++){ if($arr[$m]>$arr[$j]){ $m=$j; } } if($arr[$i] != $arr[$m]){ $tmp = $arr[$m]; $arr[$m] = $arr[$i]; $arr[$i] = $tmp; } } return $arr;}public function insertSort($arr){ if(!is_array($arr)){ return false; } $length = count($arr); if($length < 1){ return $arr; } for($i = 1;$i<$length;$i++){ $tmp = $arr[$i]; for($j=$i-1;$j>0; $j--){ if($arr[$j]>$tmp){ $arr[$j+1] = $arr[$j] $arr[$j] = $tmp; }else{ break; }; } } return $arr;}
php常见排序的更多相关文章
- 常见排序算法(附java代码)
常见排序算法与java实现 一.选择排序(SelectSort) 基本原理:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换:接着对不包括第一个记录以外的其他 ...
- JS常见排序算法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JavaScript版几种常见排序算法
今天发现一篇文章讲“JavaScript版几种常见排序算法”,看着不错,推荐一下原文:http://www.w3cfuns.com/blog-5456021-5404137.html 算法描述: * ...
- 常见排序算法(JS版)
常见排序算法(JS版)包括: 内置排序,冒泡排序,选择排序,插入排序,希尔排序,快速排序(递归 & 堆栈),归并排序,堆排序,以及分析每种排序算法的执行时间. index.html <! ...
- 常见排序算法-Python实现
常见排序算法-Python实现 python 排序 算法 1.二分法 python 32行 right = length- : ] ): test_list = [,,,,,, ...
- python常见排序算法解析
python——常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...
- python——常见排序算法解析
算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序, ...
- 常见排序算法总结 -- java实现
常见排序算法总结 -- java实现 排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间 ...
- Java基础-数组常见排序方式
Java基础-数组常见排序方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数据的排序一般都是生序排序,即元素从小到大排列.常见的有两种排序方式:选择排序和冒泡排序.选择排序的特 ...
- 常见排序算法题(java版)
常见排序算法题(java版) //插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.Sor ...
随机推荐
- linux 乌班图 安装pycharm
1.通过vmware安装ubuntu系统2.安装完成后,登录ubuntu,通过普通用户 s14登录,密码redhat3.下载pycharm到ubuntu系统中 -可以通过python -m http. ...
- OpenGL秒安装及显示
快毕业了,狂补OpenGL中.... 想当初安装opencv那么麻烦,现在openGL几秒钟就安装好了 注意:这里前提是你建立好了工程,如果连工程都不会建立~~GG 测试代码: 复制到工程进行测试! ...
- django-media隐射
需要再主url.py中设置 from django.urls import include, path from django.conf.urls.static import static from ...
- [Unity插件]Lua行为树(十三):装饰节点完善
之前介绍了组合节点中三大常用的节点:BTSequence.BTSelector和BTParallel,一般来说,这三种就够用了,可以满足很多的需求. 接下来可以完善一下装饰节点,增加几种新的节点. 1 ...
- 8.纯 CSS 创作一个充电 loader 特效
原文地址:https://segmentfault.com/a/1190000014669547 右边多出来的是 :after 的border HTML代码: <div class=" ...
- JVM虚拟机宕机_java.lang.OutOfMemoryError: unable to create new native thread
原因:当前用户的系统最最大程序数数已达到最大值,使用ulimit -u可以看到是1024 解决办法:在当前用户下使用ulimit -u 65535 然后再执行jsp,一切ok 功能说明:控 ...
- day04-完整性约束
完整性约束 关键字: not null 与 default unique primary auto_increment foreign key 1.介绍 约束条件与数据类型的宽度一样,都是可选参数作用 ...
- day22-类的多态
一.多态 多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚“鸭子类型”.所谓多态:调用的方法是同一个,但是执行的代码或者说现象不一样,此时就称为多态 #我们编写了名为Animal ...
- vue 源码阅读记录
0.webpack默认引入的是vue.runtime.common.js,并不是vue.js,功能有略微差别,不影响使用 1.阅读由ts编译后的js: 入口>构造函数 >定义各类方法 &g ...
- jwt-auth错误小结
我用的是:"tymon/jwt-auth": "1.0.0-rc.1" 根据官方网站http://jwt-auth.readthedocs.io安装,并且ven ...