merge sort and quick sort 自己去理解吧
<?php $digits=array(,,,,,,,);
function quickSort($arr){
$len=count($arr);
if($len<=){
return $arr;
}
$midKey=$arr[];
$lefts=array();
$rights=array();
for($i=;$i<$len;$i++){
if($arr[$i]<$midKey){
$lefts[]=$arr[$i];
}else{
$rights[]=$arr[$i];
}
}
$lefts=quickSort($lefts);
$rights=quickSort($rights);
return array_merge($lefts,array($midKey),$rights);
}
echo '<pre>';
//print_r(quickSort($digits)); function insertSort($digits,$inkey){
$digits=quickSort($digits);
$count=count($digits)-;
for($j=$count;$j>=;$j--){
$key=$digits[$j];
if($inkey<=$digits[$j]&&$inkey>=$digits[$j-]){
$digits[$j]=$inkey;
break;
}
$digits[$j+]=$key;
}
return $digits;
}
$inkey=;
//print_r(insertSort($digits,$inkey)); function mergeSort($digits){
if(count($digits)<=){
return $digits;
}
$mid=count($digits)/-;
$count=count($digits)-;
$right=array();
$left=array();
for($i=;$i<=$count;$i++){
if($i<=$mid){
$left[]=$digits[$i];
}else{
$right[]=$digits[$i];
}
}
$left=mergeSort($left);
$right=mergeSort($right);
$result=merge($left,$right);
return $result;
}
function merge($left,$right){
$llen=count($left);
$rlen=count($right);
$count=$llen+$rlen-;
$i=;$j=;
while(count($left)>||count($right)>){
if(count($left)>&&count($right)>){
if($left[$i]<=$right[$j]){
$result[]=$left[$i];
array_shift($left);
}else{
$result[]=$right[$j];
array_shift($right);
}
}else if(count($right)==){
$result[]=$left[$i];
array_shift($left);
}else if(count($left)==){
$result[]=$right[$j];
array_shift($right);
}
}
return $result;
}
print_r(mergeSort($digits));
merge sort and quick sort 自己去理解吧的更多相关文章
- 快速排序(Quick Sort)
快速排序是初学者比较难理解的几个算法之一,这里尽可简单化地讲解,希望能帮到大家. 快速排序基本步骤: 从数列中挑出一个元素,称为"基准"(pivot). 重新排序数列,所有元素比基 ...
- [算法]——快速排序(Quick Sort)
顾名思义,快速排序(quick sort)速度十分快,时间复杂度为O(nlogn).虽然从此角度讲,也有很多排序算法如归并排序.堆排序甚至希尔排序等,都能达到如此快速,但是快速排序使用更加广泛,以至于 ...
- PAT甲1101 Quick Sort
1101 Quick Sort (25 分) There is a classical process named partition in the famous quick sort algorit ...
- pat1101. Quick Sort (25)
1101. Quick Sort (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Peng There is a ...
- Quick Sort(快速排序)
Quick Sort Let's arrange a deck of cards. Your task is to sort totally n cards. A card consists of a ...
- quick sort 的简化实现
Pivot 随机选取意义不大 第一种方法使用随机pivot,使得尽可能平均二分序列,而实际上一般来说需要排序的集合往往是乱序的,无需重新生成随机数作为pivot,大可使用固定位置的数作为pivot,这 ...
- 1101. Quick Sort (25)
There is a classical process named partition in the famous quick sort algorithm. In this process we ...
- [算法] 快速排序 Quick Sort
快速排序(Quick Sort)使用分治法策略. 它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分:其中一部分的所有数据都比另外一部分的所有数据都要小.然后,再按此方法对这 ...
- 基础排序算法之快速排序(Quick Sort)
快速排序(Quick Sort)同样是使用了分治法的思想,相比于其他的排序方法,它所用到的空间更少,因为其可以实现原地排序.同时如果随机选取中心枢(pivot),它也是一个随机算法.最重要的是,快速排 ...
随机推荐
- 硬浮点 VFP
http://blog.chinaunix.net/uid-27875-id-3449290.html 编译器对VFP的支持一个浮点数操作最后是翻译成VFP指令,还是翻译成fpa,或者是softf ...
- Oracle 设置表空间自增长
Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据 ...
- jQuery-强大的jQuery选择器 (详解)[转]
1. 基础选择器 Basics 名称 说明 举例 #id 根据元素Id选择 $("divId") 选择ID为divId的元素 element 根据元素的名称选择, $(&quo ...
- 记一次FTP上传文件总是超时的解决过程
好久没写博,还是重拾记录一下吧. 背景:买了一个阿里云的云虚拟机用来搭建网站(起初不了解云虚拟主机和云服务器的区别,以为都是有SSH功能的,后来发现不是这样样子啊,云虚拟机就是FTP上传网页+MySQ ...
- C#中的BackgroundWorker控件+Delegate.Invoke (委托同步调用)
C#中的BackgroundWorker控件+Delegate.Invoke (委托同步调用) 简单代码,记录一下.一个BackgroundWorker控件 backgroundWorkerRefr ...
- UI Automation Test
UI Automation test is based on the windows API. U can find the UI Automation MSDN file from http://m ...
- centOS升级python3.5
CentOS自带的版本是2.7.5 目前在看廖老师的教学,他给的新版本是3以上了,果断升级到最新的Python版本 (windows下面多线程里面有点问题没解决,所以才换到linux下继续学习) 一 ...
- centos 7安装配置bind
环境: 三台虚拟机,全部安装Centos 7, tony4.hadoop.com 192.168.31.223 tony5.hadoop.com 192.168.31.224 tony6.hadoop ...
- Win7 64位 VS2013环境编译Squirrel 3.0.7
Squirrel是一个类似Lua,但是更面向对象的脚本语言. 国内这个介绍很少,环境配置更是没有任何文章提到,花了点时间搞定了,备忘记录下过程. 首先是下载,写本文时Squirrel最新版本为3.0. ...
- Azure Service Bus 中的身份验证方式 Shared Access Signature
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...