PHP算法之快速排序、冒泡排序
快速排序
<?php
Class Sort
{
//快速排序
public function quickly($array)
{
//判断排序的数组是否大于1
if (count($array)<=1) {
return $array;
}
//先找出一个中间值
$middle = $array[0];
//用来存储分好类的元素
$right = array();
$left = array(); for ($i=1; $i < count($array); $i++) {
if ($array[$i]>$middle) {
$right[] = $array[$i];//如果$array[$i]大于中间值,就放到中间值得右边
}else{
$left[] = $array[$i];//如果$array[$i]小于中间值,就放到中间值的左边
}
} //排完一次序之后在继续比较,直到所有的元素都排序完为止1
$right = $this->quickly($right);
$left = $this->quickly($left); //合并排序好的数组
return array_merge($left,array($middle),$right); }
} $arr = array(14,13,12,16,1,20,12);
$sort = new Sort();
$quickly = $sort->quickly($arr);
var_dump($quickly);
?>
输出
array (size=7)
0 => int 1
1 => int 12
2 => int 12
3 => int 13
4 => int 14
5 => int 16
6 => int 20
冒泡排序
<?php
Class Sort
{
//冒泡排序
public function bubble($arr)
{
for ($i=0; $i < count($arr); $i++) {
for ($j=0; $j < count($arr)-1; $j++) {
//这一步比较数组里元素的大小,进行换位
if ($arr[$i] < $arr[$j]) {
$tmp = $arr[$i];//$tmp是临时变量,临时存储数组的值
$arr[$i] = $arr[$j];//把数组中的值进行替换,此时$arr[$i]的键对应的就是$arr[$j]的值
$arr[$j] = $tmp;//因为已经把$arr[$j]的值替换了$arr[$i],所以现在把之前临时变量存储的值替换此时$arr[$j]的值
}
}
}
return $arr;
}
} $sort = new Sort();
$arr = array(14,13,12,16,1,20,12);
$bubble = $sort->bubble($arr);
var_dump($bubble);
?>
输出
array (size=7)
0 => int 1
1 => int 12
2 => int 12
3 => int 13
4 => int 14
5 => int 16
6 => int 20
PHP算法之快速排序、冒泡排序的更多相关文章
- Python之排序算法:快速排序与冒泡排序
Python之排序算法:快速排序与冒泡排序 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/7828610.html 入坑(简称IT)这一行也有些年头了,但自老师 ...
- 【PHP面试题】通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序
又到了金三银四找工作的时间,相信很多开发者都在找工作或者准备着找工作了.一般应对面试,我们无可厚非的去刷下面试题.对于PHPer来说,除了要熟悉自己所做的项目,还有懂的基本的算法.下面来分享下PHP面 ...
- Java常见排序算法之快速排序
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
- Java排序算法之快速排序
Java排序算法之快速排序 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分 ...
- javascript高级排序算法之快速排序(快排)
javascript高级排序算法之快速排序(快排)我们之前讨论了javascript基本排序算法 冒泡排序 选择排序 插入排序 简单复习: 冒泡排序: 比较相邻的两个元素,如果前一个比后一个大,则交换 ...
- 排序算法之快速排序Java实现
排序算法之快速排序 舞蹈演示排序: 冒泡排序: http://t.cn/hrf58M 希尔排序:http://t.cn/hrosvb 选择排序:http://t.cn/hros6e 插入排序:ht ...
- Python实现排序算法之快速排序
Python实现排序算法:快速排序.冒泡排序.插入排序.选择排序.堆排序.归并排序和希尔排序 Python实现快速排序 原理 首先选取任意一个数据(通常选取数组的第一个数)作为关键数据,然后将所有比它 ...
- Hark的数据结构与算法练习之冒泡排序
算法说明: 冒泡排序实际上是使用的最多的排序,逻辑是循环然后对相邻的数字进行比较,并交换数据. 例如有一个数组int[] arrayData = { 2, 3, 1, 5, 6, 7, 4, 65, ...
- 常用排序算法之——快速排序(C语言+VC6.0平台)
经典排序算法中快速排序具有较好的效率,但其实现思路相对较难理解. #include<stdio.h> int partition(int num[],int low,int high) / ...
- 【排序算法】快速排序算法 Java实现
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). 基本思想 先从数组中找出一个数作为基 ...
随机推荐
- windows 性能监视器常用计数器
转载地址:https://www.jianshu.com/p/f4406c29542a?utm_campaign=maleskine&utm_content=note&utm_medi ...
- sqlserver 日志查询
转载地址:https://www.cnblogs.com/davidhou/p/7890966.html
- AX_Dialog
Dialog dialog = new Dialog("@SYS1052"); DialogField ...
- PHP字符串截取函数
substr函数 描述:实现截取字符串 语法:string substr(string $string,int $start [, int $length ]) 说明:如果省略length,则返回从s ...
- SAS语言结构
SAS程序用于访问.管理.分析和展现数据.其基础组成部分是 DATA步和PROC步,PROC步又称为SAS过程.一个SAS程序可包含以 任意顺序组合的多个DATA步和多个PROC步. DATA步通常用 ...
- Acegi框架
Acegi(Acegi Security)框架,是一个能为基于Spring的企业应用提供强大而灵活安全访问控制解决方案的框架,Acegi已经成为 Spring官方的一个子项目,所以也称为Spring ...
- winSocket编程(十)完成端口
//本篇为转贴 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中……酝酿了两年之后,终于决定开始动笔了,但愿还不算晚….. 这篇文档我非 ...
- Codeforces Round #540 (Div. 3)--1118C - Palindromic Matrix
https://codeforces.com/contest/1118/problem/C 在查找元素的时候,必须按4,2,1的顺序进行.因为,如果先找1,可能就把原来的4拆散了,然后再找4,就找不到 ...
- Coding能力提升小技巧
一.使用变量的一般原则 1.变量初始化原则: 通常在变量声明时初始化; 在靠近变量第一次使用的位置初始化; 在类的构造函数里初始化变量. 2.作用域: 使变量引用局部化,即把引用到变量的地方尽可能集中 ...
- 背水一战 Windows 10 (63) - 控件(WebView): 基础知识, 加载 html, http, https, ms-appx-web:///, embedded resource, ms-appdata:///, ms-local-stream://
[源码下载] 背水一战 Windows 10 (63) - 控件(WebView): 基础知识, 加载 html, http, https, ms-appx-web:///, embedded res ...