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),它也是一个随机算法.最重要的是,快速排 ...
随机推荐
- 转载:分布式系统的CAP理论
原文转载Hollis原创文章:http://www.hollischuang.com/archives/666 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提 ...
- C#捕获c++异常
摘自:http://bbs.csdn.net/topics/390665130 .net 40 中,c# 默认情况下只处理SEH的异常.不处理CSE的异常.若你要捕获这类的异常. [HandlePro ...
- mysql用户的创建
MySQL是采用c/s方式的,需要客户端登录服务器,那么可以登录账号叫做用户,这些用户的信息都存储在mysql数据库(mysql安装时默认有的一个数据库)中的user表中, 比如用户的名称,用户的密码 ...
- Hibernate和Jpa的关系
http://blog.sina.com.cn/s/blog_5f1619e80100yoxz.html Jpa是规范,Hibernate是实现,使用Hibernate的时候一定会使用到Jpa
- DataTable 和Json 字符串互转
#region DataTable 转换为Json字符串实例方法 /// <summary> /// GetClassTypeJosn 的摘要说明 /// </summary> ...
- VBoxManage: error: Cannot register the hard disk 解决办法
将虚拟盘从一个分区拷到另外一个分区上,打开虚拟机挂载这个虚拟盘老是报错,VBoxManage: error: Cannot register the hard disk '/media/New Vol ...
- 通过uCGUIBulider4.0建立的ucGUI文件,控件汉字不能显示问题解决办法
由于uCGUIBulider4.0不能在64位操作系统中运行,于是在电脑上通过VMware Workstation Pro搭建虚拟的32位的win7环境,然后把win7中用uCGUIBulider4. ...
- IOS XIB Cell自适应高度实现
1.代码实现Cell高度自适应的方法 通过代码来实现,需要计算每个控件的高度,之后获取一个cell的 总高度,比较常见的是通过lable的文本计算需要的高度. CGSize labelsize = [ ...
- FMX下Edit只能输入数字
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState) ...
- cas+shiro实现不时时的去请求cas进行身份验证
cas+shiro不进行时时去cas验证身份信息,需要用shiro在当前系统有一份完整的认证机构. 那么有一个问题,什么时候去cas校验信息,目前的配置方式: cas系统设置默认的浏览器session ...