【算法】PHP实现冒泡排序和快速排序--防遗忘
有没有这样的感觉,排序算法虽然简单,但是没看过一次,一会就又忘了,所以有必要 自己使用实际的代码运行实现,才记忆牢固,为此Mark
//需求:将数组中元素,从大到小排列
$a = array(11, 22, 44, 66, 99, 88);
1. 冒泡排序
/*将第1个数与第2个数,比较如果小于第2个数,就交换位置,依次与这些数比较。
*紧接着是 第2个数做同样的事,直到最后一个数为止
*/
//需求:将数组中元素,从大到小排列
$a = array(11, 22, 44, 66, 99, 88);
$sortArray = bubbleSort($a);
print_r($sortArray); function bubbleSort($array)
{/*{{{*/
$oldArray = $array;
$newArray = array();
$count = count($oldArray);
for($i = 0; $i < $count; $i++)
{/*{{{*/
//初始化
$newArray[$i] = $oldArray[$i]; for($j = $i+1; $j < $count; $j++)
{
if($oldArray[$j] > $newArray[$i])
{
$newArray[$i] = $oldArray[$j];
//交换位置
$tmp = $oldArray[$i];
$oldArray[$i] = $oldArray[$j];
$oldArray[$j] = $tmp;
}
}
}/*}}}*/ return $newArray;
}/*}}}*/
2. 快速排序
/*以第一个数为基准,比这个数大的数放到左边的数组,比这个数大的数放到右边的数组,然后做递归操作。
*最后将左边数组,这个数和右边数组做 数组的 array_merge操作就行了
*/
//需求:将数组中元素,从大到小排列
$a = array(11, 22, 44, 66, 99, 88);
$sortArray = bubbleSort($a);
print_r($sortArray); function fastSort($oldArray)
{/*{{{*/
$newArray = array();
$count = count($oldArray);
if($count <= 1) return $oldArray;
$stand = $oldArray[0];
//初始化
$left_array = array();
$right_array = array();
for($i = 1; $i < $count; $i++)
{/*{{{*/
if($oldArray[$i] > $stand)
{
$left_array[] = $oldArray[$i];
}
else
{
$right_array[] = $oldArray[$i];
} }/*}}}*/ //递归调用
$left_array = fastSort($left_array);
$right_array = fastSort($right_array); //也可循环放入新数组中
$newArray = array_merge($left_array, array($stand), $right_array);
return $newArray;
}/*}}}*/
【算法】PHP实现冒泡排序和快速排序--防遗忘的更多相关文章
- 【PHP面试题】通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序
又到了金三银四找工作的时间,相信很多开发者都在找工作或者准备着找工作了.一般应对面试,我们无可厚非的去刷下面试题.对于PHPer来说,除了要熟悉自己所做的项目,还有懂的基本的算法.下面来分享下PHP面 ...
- 排序算法——交换排序(冒泡排序、快速排序)(java)
一.冒泡排序 时间复杂度:O(n^2) 公认最慢的排序,每次把最大/最小的放一边,原理: [57,68,59,52] [57,68,59,52] [57,59,68,52] [57,59,52,68] ...
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- PHP描述冒泡排序和快速排序算法
使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组.写一个二维数组排序算法函数,能够具有通用 ...
- 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
2013-08-22 14:55:33 八大排序方法汇总(选择排序-简单选择排序.堆排序,插入排序-简单插入排序.shell排序,交换排序-冒泡排序.快速排序,归并排序,计数排序). 插入排序还可以和 ...
- 交换排序:冒泡排序vs快速排序
在开发的过程中, 经常会遇到集合排序, 那么一般情况下, 我们都是使用list.OrderBy()的方式来排序, 也无需关注到里面算法的实现是个什么样子. 正好这几天准备回顾一下数据结构与算法. 首先 ...
- 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现) 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现) 程序员必知的8大排序(三)-------冒 ...
- 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)
不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...
- 2017.12.9 Java中的排序---冒泡排序、快速排序、选择排序
//冒泡排序 public class demo{ public static void main(String[] args) { int[] sum={2,9,10,1,5,88}; System ...
随机推荐
- 开源一个练手小App, PrintableCheckList
A small but powerful App, only focus on one thing, make you easy to print out your checklist. It is ...
- WebApi系列~目录
回到占占推荐博客索引 写了这个系列的文章不少了,也应该为大家写个目录了,最近很刮了很多SOA的风,很多企业都将自己的系统进行分割,通常是按模块进行拆分,为这个模块提供统一的接口提供业务服务,这不紧可以 ...
- iOS 离屏渲染的研究
GPU渲染机制: CPU 计算好显示内容提交到 GPU,GPU 渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会按照 VSync 信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示. G ...
- 工作任务:模拟淘宝登录和购物车功能:使用cookie记录登录名,下次登录时能够记得上次的登录名,使用cookie模拟购物车功能,使用session记住登录信息并验证是否登录,防止利用url打开网站,并实现退出登录功能
登入界面<% Cookie[] cks =request.getCookies(); String str=null; for(Cookie ck:cks) { if(ck.getName(). ...
- Entity Framework Code First执行SQL语句、视图及存储过程
1.Entity Framework Code First查询视图 Entity Framework Code First目前还没有特别针对View操作的方法,但对于可更新的视图,可以采用与Table ...
- 解读sencha touch移动框架的核心架构(一)
sencha的前身就是Extjs了,sencha 框架是世界上第一个基于HTML5的Mobile App框架 那么何谓框架,传统软件工程对于库和框架的区分主要着眼于对应用运行流程的控制权,框架提供架构 ...
- 《JS设计模式笔记》 2,简单工厂模式
<script type="text/javascript"> //简单工厂模式 //定义:由一个方法来决定到底要创建哪个类的实例,而这些实例经常拥有相同的接口.其实例 ...
- Android接入百度自动更新SDK
一:前言 公司的app,上传到百度应用市场,然后说必须要接入百度的自动更新sdk才能上架,于是从百度官网上去下载jar包,下载的时候必须要带上数据统计,如果使用自动的jar包,还需要带上广告联盟,坑爹 ...
- Binary XML file line #2: Error inflating
06-27 14:29:27.600: E/AndroidRuntime(6936): FATAL EXCEPTION: main 06-27 14:29:27.600: E/AndroidRunti ...
- Google Chrome 应用商店上传扩展程序
1. 进入 Google 开发者中心 网址: https://chrome.google.com/webstore/developer/dashboard?hl=zh-cn 2. 添加新项 上传后,出 ...