好久没来逛博客了,实在是因为项目太忙的缘故,抽不出时间来写,对不住关注我博客的同学了。最近复习了一下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
PHP实现各种排序算法 // 冒泡排序 // 交换法排序 // 选择法排序 // 插入法排序 // 快速排序 ……
介绍一个快速排序的算法php实现类,采用递归算法的快速排序,找到要排序的数组,最低的排序子段和最高的排序字段。
一个快速排序的算法php实现类,采用递归算法的快速排序,找到要排序的数组,最低的排序子段和最高的排序字段。
php 二维数组快速排序算法的实现代码 二维数组排序算法与一维数组排序算法基本理论都是一样,都是通过比较把小的值放在左变的数组里,大的值放在右边的数组里在分别递归。 实例代码: <?php class Bubble { ...
快速排序算法是对冒泡算法的一个优化。他的思想是先对数组进行分割, 把大的元素数值放到一个临时数组里,把小的元素数值放到另一个临时数组里(这个分割的点可以是数组中的任意一个元素值,一般用第一个元素,即$...
主要介绍了php实现的常见排序算法汇总,包括插入排序、选择排序、冒泡排序、快速排序、归并排序与堆排序,并附有对排序算法的详细说明,需要的朋友可以参考下
经典的冒泡排序、插入排序、选择排序、希尔排序和快速排序算法的PHP实现版
主要介绍了PHP两种快速排序算法实例,本文直接给出实现代码,分别使用递归法、迭代法实现,需要的朋友可以参考下
PHP中的几种排序算法 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0。...本案例主要使用PHP 7中的几种排序算法:快速排序、选择排序、插入排序、冒泡排序、归并排序来实现排序的功能。
本文实例讲述了PHP四种排序算法实现及效率分析。分享给大家供大家参考,具体如下: PHP的四种基本排序算法为:冒泡排序、插入排序、选择排序和快速排序。 下面是我整理出来的算法代码: 1. 冒泡排序: 思路:对数组...
本文将依次介绍一些常用的排序算法,以及PHP实现。 快速排序是由东尼·霍尔发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速...
本文实例讲述了php项目开发中用到的快速排序算法。分享给大家供大家参考,具体如下: 实际上在,做web开发,比较少遇到使用一些算法之类的,毕竟不是做搜索引擎,也不是写底层(比如写个类似于mysql这样的数据库,...
下列动图来自五分钟学算法,演示了快速排序算法的原理和步骤。 步骤: 从数组中选个基准值 将数组中大于基准值的放同一边、小于基准值的放另一边,基准值位于中间位置 递归的对分列两边的数组再排序 代码实现 ...
本文将依次介绍一些常用的排序算法,以及PHP实现。 1 快速排序 快速排序是由东尼·霍尔发展的一种排序算法。 在平均状况下,排序 n 个项目要Ο(n log n)次比较。 在最坏状况下则需要Ο(n2)次比较,但这种状况并不...
│ │ ├── QuickSort.php 快速排序 │ │ ├── ShuttleSort.php 飞梭排序 │ │ ├── ShellSort.php 希尔排序 │ │ ├── MergeSort.php 归并排序 │ │ ├── InsertSort.php 插入排序 │ │ └── ...