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),它也是一个随机算法.最重要的是,快速排 ...
随机推荐
- 关于 Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause() 错误
最近在做项目的时候发现一个如题的控制台报错. 一看右侧的报错文件是undefined 这下苦恼了,定位不到问题所在. 今天解决了这个问题,就来分享一下. 问题的关键所在是在执行了play()方法以后立 ...
- netty学习
1.不选择java原生nio的原因 (1)nio的类库和api繁杂 (2)需要具备其他的额外的技能做铺垫,例如熟悉java多线程编程. (3)可靠性能力补齐的工作量和难度都非常大,例如客户 ...
- 关于Spring和mybatis的整合
Spring同Mybatis的整合 1.引入相应的jar包.(Mybatis的jar包,Spring的jar包,mybatis-spring-1.1.1.jar). 2.编写相应的包(三层的包).搭建 ...
- 高尔夫管理系统SSH
登录-----------http://localhost:8080/GOLF/Denglu 一.Action 1.处理今日消费数据逻辑的 package com.chinasofti.golf.ac ...
- Mac 下安装ruby,以及CocoaPods安装以及使用网摘
ruby安装网址:https://ruby-china.org/wiki/install_ruby_guide CocoaPods安装和使用教程地址:http://code4app.com/artic ...
- BZOJ 1026: [SCOI2009]windy数
题目 人生中的第一道数位dp,很有趣,虽然我很快推出了结构,但是过程却迟迟没有写出来,最后看别人的题解才恍然大悟 d[i][j]表示数位为i,最高位为j的方案数 DpInit非常简单,复杂度应该是O( ...
- C语言小练习一
题目要求:国王将金币作为工资,发放给忠诚的骑士.第1天,骑士收到一枚金币:之后两天(第2天和第3天)里,每天收到两枚金币:之后三天(第4.5.6天)里,每天收到三枚金币:之后四天(第7.8.9.10天 ...
- 使用gulp添加版本号
由于js和css的缓存问题,所以,希望在html上给js和css添加上版本号. 常见的用法是使用gulp-rev和gulp-rev-collector进行操作.使用这两个插件,得到的效果如下图所示: ...
- Windows环境下使用Clover四叶草引导双硬盘安装OSX 10.11.5原版镜像
作为一个穷逼大学生,想搞iOS开发 买不起Mac只能鼓捣鼓捣黑苹果啦........ 之前我的电脑通过变色龙引导的方式装了个OSX10.10和win8.1双系统,因为自学的是Swift语言之前装的OS ...
- 河南省第四届ACM程序设计大赛
A: 序号互换 #include <cstdio> #include <cstdlib> #include <cstring> #include <algor ...