`
xitong
  • 浏览: 6188899 次
文章分类
社区版块
存档分类
最新评论

php实现一些快速排序算法

 
阅读更多

好久没来逛博客了,实在是因为项目太忙的缘故,抽不出时间来写,对不住关注我博客的同学了。最近复习了一下c语言,将C语言的一些排序算法用php实现了一下,贴出来大家供大家学习指正。

php实现插入排序

/**
* Description:php实现插入排序的类
* @author wzy
*/
class insert_sort {
	public $arr;
	public $size;
	
	function __construct($arr) {
		$this->arr = $arr;
		$this->size = count ( $arr );
	}
	
	//引用传递,实现数据值的交换
	function swap(&$a, &$b) {
		list ( $a, $b ) = array ($b, $a );
	}
	
	//插入排序主逻辑函数
	function insert_sort_process() {
		for($j = 1; $j < $this->size; $j ++) {
			$key = $this->arr [$j];
			$i = $j - 1;
			while ( $i >= 0 && $this->arr [$i] > $key ) {
				$this->swap ( $this->arr [$i], $this->arr [$i + 1] );
				$i --;
			}
			//$i+1是因为退出while循环时进行了减一操作
			$this->arr [$i + 1] = $key;
		}
		return $this->arr;
	}
}

php实现快速排序

/**
* Description:php实现快速排序类
*
* @author wzy
*    
*/
class quick_sort {
	public $arr;
	public $size;
	
	function __construct($array) {
		$this->arr = $array;
		$this->size = count ( $array );
	}
	
	function quick_swap(&$a, &$b) {
		list ( $a, $b ) = array ($b, $a );
	}
	
	//获取分段数据位置
	function quick_partiton($left, $right) {
		$key = $this->arr [$left];
		$i = $left + 1;
		$j = $right;
		while ( $i <= $j ) {
			while ( $i <= $j && $this->arr [$i] <= $key ) {
				$i ++;
			}
			while ( $i <= $j && $this->arr [$j] > $key ) {
				$j --;
			}
			if ($i < $j) {
				$this->quick_swap ( $this->arr [$i], $this->arr [$j] );
			}
		}
		$this->quick_swap ( $this->arr [$left], $this->arr [$j] );
		return $j;
	}
	
	//快速排序主逻辑函数
	function quick_sort_process($left = null, $right = null) {
		$left = (is_null ( $left )) ? 0 : $left;
		$right = (is_null ( $right )) ? $this->size - 1 : $right;
		if ($left < $right) {
			$middle = $this->quick_partiton ( $left, $right );
			$this->quick_sort_process ( $left, $middle - 1 );
			$this->quick_sort_process ( $middle + 1, $right );
		}
	}
}
调用$this->arr即为排序好的数组

以后有时间会经常更新自己的博客,贴出自己的原创性代码供大家学习讨论,感谢大家关注

分享到:
评论

相关推荐

    PHP-基于php实现的快速排序算法-QuickSort.zip

    PHP_基于php实现的快速排序算法_QuickSort

    PHP实现各种排序算法

    PHP实现各种排序算法 // 冒泡排序 // 交换法排序 // 选择法排序 // 插入法排序 // 快速排序 ……

    快速排序的算法php实现类.zip

    介绍一个快速排序的算法php实现类,采用递归算法的快速排序,找到要排序的数组,最低的排序子段和最高的排序字段。

    快速排序的算法php实现类

    一个快速排序的算法php实现类,采用递归算法的快速排序,找到要排序的数组,最低的排序子段和最高的排序字段。

    php 二维数组快速排序算法的实现代码

    php 二维数组快速排序算法的实现代码 二维数组排序算法与一维数组排序算法基本理论都是一样,都是通过比较把小的值放在左变的数组里,大的值放在右边的数组里在分别递归。 实例代码: &lt;?php class Bubble { ...

    PHP 快速排序算法详解

    快速排序算法是对冒泡算法的一个优化。他的思想是先对数组进行分割, 把大的元素数值放到一个临时数组里,把小的元素数值放到另一个临时数组里(这个分割的点可以是数组中的任意一个元素值,一般用第一个元素,即$...

    php实现的常见排序算法汇总

    主要介绍了php实现的常见排序算法汇总,包括插入排序、选择排序、冒泡排序、快速排序、归并排序与堆排序,并附有对排序算法的详细说明,需要的朋友可以参考下

    PHP 排序算法源代码

    经典的冒泡排序、插入排序、选择排序、希尔排序和快速排序算法的PHP实现版

    PHP两种快速排序算法实例

    主要介绍了PHP两种快速排序算法实例,本文直接给出实现代码,分别使用递归法、迭代法实现,需要的朋友可以参考下

    PHP中的几种排序算法

    PHP中的几种排序算法 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0。...本案例主要使用PHP 7中的几种排序算法:快速排序、选择排序、插入排序、冒泡排序、归并排序来实现排序的功能。

    PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】

    本文实例讲述了PHP四种排序算法实现及效率分析。分享给大家供大家参考,具体如下: PHP的四种基本排序算法为:冒泡排序、插入排序、选择排序和快速排序。 下面是我整理出来的算法代码: 1. 冒泡排序: 思路:对数组...

    PHP实现常用排序算法(含示意动图)

    本文将依次介绍一些常用的排序算法,以及PHP实现。 快速排序是由东尼·霍尔发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速...

    php项目开发中用到的快速排序算法分析

    本文实例讲述了php项目开发中用到的快速排序算法。分享给大家供大家参考,具体如下: 实际上在,做web开发,比较少遇到使用一些算法之类的,毕竟不是做搜索引擎,也不是写底层(比如写个类似于mysql这样的数据库,...

    PHP快速排序算法实现的原理及代码详解

    下列动图来自五分钟学算法,演示了快速排序算法的原理和步骤。 步骤: 从数组中选个基准值 将数组中大于基准值的放同一边、小于基准值的放另一边,基准值位于中间位置 递归的对分列两边的数组再排序 代码实现 ...

    PHP实现常用排序算法的方法

    本文将依次介绍一些常用的排序算法,以及PHP实现。 1 快速排序 快速排序是由东尼·霍尔发展的一种排序算法。 在平均状况下,排序 n 个项目要Ο(n log n)次比较。 在最坏状况下则需要Ο(n2)次比较,但这种状况并不...

    50个优秀经典PHP算法大集合

    │ │ ├── QuickSort.php 快速排序 │ │ ├── ShuttleSort.php 飞梭排序 │ │ ├── ShellSort.php 希尔排序 │ │ ├── MergeSort.php 归并排序 │ │ ├── InsertSort.php 插入排序 │ │ └── ...

Global site tag (gtag.js) - Google Analytics