【算法】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 ...
随机推荐
- react native 入门实践
上周末开始接触react native,版本为0.37,边学边看写了个demo,语法使用es6/7和jsx.准备分享一下这个过程.之前没有native开发和react的使用经验,不对之处烦请指出.希望 ...
- 2013 duilib入门简明教程 -- XML基础类(7)
现在大家应该对XML描述界面不那么陌生了,那么我们做进一步介绍. 前面的教程我们写了很多代码,为的是让大家了解下基本流程,其实duilib已经对常用的操作做了很好的包装,正式使用时无需像前面的教程那样 ...
- SQL中Group By的使用
1.概述 2.原始表 3.简单Group By 4.Group By 和 Order By 5.Group By中Select指定的字段限制 6.Group By All 7.Group By与聚合函 ...
- JAVA基础-输入输出:1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。
1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上. package Test03; ...
- 在微软伪静态处理机制下action导致伪静态的地址重现的问题
伪静态前的地址:/sc/ProductList.aspx?pClass=0&descType=2&minPrice=1&maxPrice=11 伪静态后的地址:/product ...
- hudson部署过程
hudson部署过程: java安装 http://developer.51cto.com/art/201504/470683.htm tomcat安装 http://blog.csdn.net/hu ...
- Vue.js学习笔记(4)
分享一段将 json数组数据以 csv格式导出的代码: html: <button class="btn btn-danger" @click='exportData'&g ...
- 深入理解DOM节点类型第三篇——注释节点和文档类型节点
× 目录 [1]注释节点 [2]文档类型 前面的话 把注释节点和文档类型节点放在一起是因为IE8-浏览器的一个bug.IE8-浏览器将标签名为"!"的元素视作注释节点,所以文档声明 ...
- Android Fragment---执行Fragment事务
转载博客:http://blog.csdn.net/think_soft/article/details/7272853 在Activity中使用有关Fragment的添加.删除.替换以及用它们执行其 ...
- java中两种添加监听器的策略
/*第一种:将事件的处理委托给其他对象,下面的例子是委托给了MyListener(implements ActionListener)*/ 1 import java.applet.Applet; i ...