<?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 自己去理解吧的更多相关文章

  1. 快速排序(Quick Sort)

    快速排序是初学者比较难理解的几个算法之一,这里尽可简单化地讲解,希望能帮到大家. 快速排序基本步骤: 从数列中挑出一个元素,称为"基准"(pivot). 重新排序数列,所有元素比基 ...

  2. [算法]——快速排序(Quick Sort)

    顾名思义,快速排序(quick sort)速度十分快,时间复杂度为O(nlogn).虽然从此角度讲,也有很多排序算法如归并排序.堆排序甚至希尔排序等,都能达到如此快速,但是快速排序使用更加广泛,以至于 ...

  3. PAT甲1101 Quick Sort

    1101 Quick Sort (25 分) There is a classical process named partition in the famous quick sort algorit ...

  4. pat1101. Quick Sort (25)

    1101. Quick Sort (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Peng There is a ...

  5. Quick Sort(快速排序)

    Quick Sort Let's arrange a deck of cards. Your task is to sort totally n cards. A card consists of a ...

  6. quick sort 的简化实现

    Pivot 随机选取意义不大 第一种方法使用随机pivot,使得尽可能平均二分序列,而实际上一般来说需要排序的集合往往是乱序的,无需重新生成随机数作为pivot,大可使用固定位置的数作为pivot,这 ...

  7. 1101. Quick Sort (25)

    There is a classical process named partition in the famous quick sort algorithm. In this process we ...

  8. [算法] 快速排序 Quick Sort

    快速排序(Quick Sort)使用分治法策略. 它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分:其中一部分的所有数据都比另外一部分的所有数据都要小.然后,再按此方法对这 ...

  9. 基础排序算法之快速排序(Quick Sort)

    快速排序(Quick Sort)同样是使用了分治法的思想,相比于其他的排序方法,它所用到的空间更少,因为其可以实现原地排序.同时如果随机选取中心枢(pivot),它也是一个随机算法.最重要的是,快速排 ...

随机推荐

  1. javascript:void(0)

    这是不是一个设计缺陷呢 void(0)这种用法巧妙利用void关键字的特性返回undefined(且没有副作用).因为不是关键字,比如直接使用undefined,内容可能被改写. 再来看为啥使用0,而 ...

  2. C# rename方法重命名文件

    记得C# File类中是没有rename这个方法 所以网上很多都用的是move moveTo copy+delete等这些方法 其实以上的方法 虽然可以实现功能 但看起来总觉得很蛋疼 今天百度 突然发 ...

  3. jQuery.ajaxSetup() 函数详解

    该函数用于更改jQuery中AJAX请求的默认设置选项.之后执行的所有AJAX请求,如果对应的选项参数没有设置, 将使用更改后的默认设置. //设置AJAX的全局默认选项$.ajaxSetup( {  ...

  4. 怎样防止重复发送 Ajax 请求?

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:长天之云链接:http://www.zhihu.com/question/19805411/answer/15465427来源 ...

  5. app之间的跳转,进入二级界面

    功能实现:A跳到B并打开B中指定页面.http://blog.csdn.net/dollyyang/article/details/50325307 点击页面判断是否安装app并打开,否则跳转app ...

  6. html5 canvas绘画时钟

    本示例使用HTML5 canvas,模拟显示了一个时钟, 请使用支持HTML5的浏览器预览效果: HTML部分: <!DOCTYPE html> <html lang="e ...

  7. Qt Qwt之坐标轴移动

    最近接触到个pro需要做到这方面,于是找了相关材料,也跟好些人讨论,目前就最简单的使用方法,通过按钮触发去控制 X,Y轴的移动,比例自己定义 这个是X轴放大的 QwtInterval tempInte ...

  8. C语言通过timeval结构设置周期

    在C语言中,我们经常需要设置一个时间周期.在这里,我们通过Timeval结构实现时间周期的设置.首先,我们介绍timeval,其定义如下(转载http://www.cnblogs.com/wainiw ...

  9. ECMAScript6的Promise对象

    1. 概念 Promise对象用于异步(asynchronouss)计算,一个Promise对象代表着一个还未完成,但预期完成的操作. 2. 出现原因: 1)  如果你需要通过ajax发送多次请求,而 ...

  10. vs.net2008工具栏上找不到debug/release选项

    使用vs.net多年,以前不时会用到release发布,近几年几乎不用的.近来生成时感觉有些项目使用了release选项,因为生成的dll的位置变了.于是想调整回bebug,发现vs.net2008的 ...