快速排序递归版php实现

标签: 快排 快速排序 php实现
9人阅读 评论(0) 收藏 举报
分类:

今天开始复习算法,连最熟悉的快排都写不出来了,汗颜,贴下代码,以备后用吧

function qSort(array &$a, $low, $high)
{   
    if($low >= $high) {
        return;
    }
    $index = partition($a,$low,$high);
    qSort($a,$low,$index-1);
    qSort($a,$index+1,$high);
}

//元素相互赋值比交换效率
function partition(array &$a, $low, $high)
{
    $temp = $a[$low];
    while($low < $high) {
        while($low < $high && $a[$high] >= $temp) { 
            --$high;
        }   
        $a[$low] = $a[$high];
        while($low < $high && $a[$low] <= $temp) {
            ++$low;
        }   
        $a[$high] = $a[$low];
    }   
    $a[$low] = $temp;
    return $low;
}

$a = [0,20,7,-1,6,2,6,2,8,9,0,1];
qSort($a, 0, count($a) -1);

var_dump(implode(',', $a));

结果展示:-1,0,0,1,2,2,6,6,7,8,9,20

查看评论

PHP实现排序算法----快速排序(Quick Sort)、快排

基本思想:快速排序(Quicksort)是对冒泡排序的一种改进。他的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行快...
  • baidu_30000217
  • baidu_30000217
  • 2016-11-23 21:56:35
  • 4247

php快速排序

  • 2018年01月17日 18:13
  • 3KB
  • 下载

快速排序(递归法与迭代法)

用递归法:代码简洁,但运行速度很慢; 用迭代法:代码略多,但运行速度很快。 本文快速排序方法: 用两个指针i和j,分别指向传进来的低位地址和高位地址。去中间的数为基准值。i从左向右移动,碰到比基...
  • lingfeng2019
  • lingfeng2019
  • 2017-05-03 16:26:50
  • 854

快速排序 的原理及其java实现(递归与非递归)

快速排序 的原理及其java实现(递归与非递归)
  • mine_song
  • mine_song
  • 2017-03-20 09:25:49
  • 720

快排的递归和非递归版本

1.递归有3种版本,下面值列出两种,另一种其实跟列出的两种的一个变种。   (1)算导版本(伪代码): (2)前后依次覆盖版本: #include #include #include #inc...
  • Hadas_Wang
  • Hadas_Wang
  • 2016-03-17 21:10:15
  • 2961

快速排序Java源码(递归和非递归)

package com.side.quicksort; import com.side.tests.Stack;//作者自己定义的栈类 public class QuickSort { /**...
  • bnuside
  • bnuside
  • 2011-10-26 12:52:39
  • 5108

Java实现快速排序递归和非递归

/** * 快速排序 * */ public class QuickSort{ /** * 递归一 * */ public static void sort1(int[] arr...
  • mwb1219
  • mwb1219
  • 2016-04-27 18:22:52
  • 712

快速排序(递归版)

快速排序是最经典的排序算法,它用途广泛,效率很高,也经常被拿来检验coder的基本功底。此篇作为快排的学习笔记。快排的基本思想快速排序是典型的分治算法,理解了快排的思想,很容易写出递归版的代码。快排分...
  • sixdaycoder
  • sixdaycoder
  • 2015-07-14 16:20:12
  • 1635

分别使用递归和迭代实现快速排序

#include #include #include #include"CaculateTime.h" using namespace std; /* ...
  • lsx567_
  • lsx567_
  • 2015-09-06 12:23:17
  • 468

快速排序C语言实现(递归)和希尔排序

快速排序:#include "stdio.h" void swap(int *a,int *b) { /*序列中元素位置的交换*/ int ...
  • qq_21792169
  • qq_21792169
  • 2016-10-07 20:09:56
  • 2242
    个人资料
    等级:
    访问量: 724
    积分: 38
    排名: 191万+
    文章分类
    文章存档