快速排序

<?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算法之快速排序、冒泡排序的更多相关文章

  1. Python之排序算法:快速排序与冒泡排序

    Python之排序算法:快速排序与冒泡排序 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/7828610.html 入坑(简称IT)这一行也有些年头了,但自老师 ...

  2. 【PHP面试题】通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序

    又到了金三银四找工作的时间,相信很多开发者都在找工作或者准备着找工作了.一般应对面试,我们无可厚非的去刷下面试题.对于PHPer来说,除了要熟悉自己所做的项目,还有懂的基本的算法.下面来分享下PHP面 ...

  3. Java常见排序算法之快速排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...

  4. Java排序算法之快速排序

    Java排序算法之快速排序 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分 ...

  5. javascript高级排序算法之快速排序(快排)

    javascript高级排序算法之快速排序(快排)我们之前讨论了javascript基本排序算法 冒泡排序 选择排序 插入排序 简单复习: 冒泡排序: 比较相邻的两个元素,如果前一个比后一个大,则交换 ...

  6. 排序算法之快速排序Java实现

    排序算法之快速排序 舞蹈演示排序: 冒泡排序: http://t.cn/hrf58M 希尔排序:http://t.cn/hrosvb  选择排序:http://t.cn/hros6e  插入排序:ht ...

  7. Python实现排序算法之快速排序

    Python实现排序算法:快速排序.冒泡排序.插入排序.选择排序.堆排序.归并排序和希尔排序 Python实现快速排序 原理 首先选取任意一个数据(通常选取数组的第一个数)作为关键数据,然后将所有比它 ...

  8. Hark的数据结构与算法练习之冒泡排序

    算法说明: 冒泡排序实际上是使用的最多的排序,逻辑是循环然后对相邻的数字进行比较,并交换数据. 例如有一个数组int[] arrayData = { 2, 3, 1, 5, 6, 7, 4, 65, ...

  9. 常用排序算法之——快速排序(C语言+VC6.0平台)

    经典排序算法中快速排序具有较好的效率,但其实现思路相对较难理解. #include<stdio.h> int partition(int num[],int low,int high) / ...

  10. 【排序算法】快速排序算法 Java实现

    快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). 基本思想 先从数组中找出一个数作为基 ...

随机推荐

  1. Java第四次实验

    实验一: Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章: 参考ht ...

  2. jquery中siblings方法配合什么方法一起使用

    siblings() 获得匹配集合中每个元素的同胞,通过选择器进行筛选是可选的.接下来通过本文给大家介绍jQuery siblings()用法实例详解,需要的朋友参考下吧 siblings() 获得匹 ...

  3. APP微信支付报错《商户号该产品权限未开通,请前往商户平台>产品中心检查后重试》

    问题 最近项目使用MUI,HBuilder.开发打包H5的app 在开发H5 plus支付的时候,遇到以下问题: App微信支付调官方的统一下单接口返回错误信息 {return_msg=商户号该产品权 ...

  4. 20154305 齐帅 PC平台逆向破解

    Exp1 PC平台逆向破解 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时 ...

  5. python之路(二)-collections系列

    collections提供了一些比较方便的方法,使用时需要先导入模块 导入模块: import collections 1. 计数器Counter 统计参数中出现的次数,以字典的方式返回结果,参数可以 ...

  6. request接受表单数据中文乱码问题分析

    这个问题困扰了我很久,今天就来探索探索. [页面乱码] 浏览器的默认编码格式和你的jsp中的编码格式不统一造成的.假如你的jsp的头编码设置为utf-8,但是浏览器设置的是gbk,就会乱码. [pos ...

  7. WeexSDK源码分析(iOS)

    0.从工作原理谈起 Weex 表面上是一个客户端技术,但实际上它串联起了从本地开发.云端部署到分发的整个链路.开发者首先可在本地像编写 web 页面一样编写一个 app 的界面,然后通过命令行工具将之 ...

  8. 建立一个类似于天眼的Android应用程序:第4部分 - 持久收集联系人,通话记录和短信(SMS)

    建立一个类似于天眼的Android应用程序:第4部分 - 持久收集联系人,通话记录和短信(SMS) 电话黑客android恶意软件编程黑客入侵linux 随着我们继续我们的系列,AMUNET应用程序变 ...

  9. JavaScript实现单张图片上传功能

    前台jsp代码 <%@ page language="java" pageEncoding="UTF-8" contentType="text/ ...

  10. [Swift]键盘遮挡控件

    键盘遮挡控件: super.viewDidLoad(){ // Do any additional setup after loading the view, typically from a nib ...