php版快速排序

<?php
	//快速排序
function quickSork($arr)
{
	$count = count($arr);
	if($count < 1)
	{
		return $arr;
	}
	$one = $arr[0];
	$left_array = $right_array  = array();

	for($i = 1; $i < $count ; $i++)
	{
		if($arr[$i] <= $one)
		{
			$left_array[] = $arr[$i];
		}else
		{
			$right_array[] = $arr[$i];
		}
	}
	$left_array = quickSork($left_array);
	$right_array = quickSork($right_array);
	return array_merge($left_array , array($one) , $right_array);

}
$arr = array(1,4,6,10,5,0,10,99,7);
print_r(quickSork($arr));
时间: 2024-09-29 18:00:31

php版快速排序的相关文章

Ruby版快速排序

class Array  def quick_sort    return [] if self.empty?    k = self[0]    head = 0    tail = self.length - 1    while head < tail      (tail-head).times do        if self[tail] < k          self[tail], self[head] = self[head], self[tail]          br

递归版快速排序-JS代码

1 "use strict" 2 var arr1=[11,21,3,4,0]; 3 function qSort(arr){ 4 var mid,left,right,len,i,j,emptyArr,emptyArr2; 5 len = arr.length; 6 left = []; 7 right = []; 8 emptyArr=[]; 9 emptyArr2=[]; 10 j = 0; 11 if (len < 2){ 12 return arr 13 }else{

js十大排序算法详解

十大经典算法导图  图片名词解释:n: 数据规模k:"桶"的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存 1.冒泡排序 1.1  原始人冒泡排序 function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len; i++) { for (var j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j+1]

算法第四版学习笔记之快速排序 QuickSort

软件:DrJava 参考书:算法(第四版) 章节:2.3快速排序(以下截图是算法配套视频所讲内容截图) 1:快速排序 2:

python版的快速排序算法源码

下面的代码段是关于python版的快速排序算法的代码,应该对各位朋友有用途. def qsort(L): return ((qsort([x for x in L[1:] if x < L[0]]) + L[0:1] + qsort([x for x in L[1:] if x >= L[0]]) ) if L else []) 版本2 def qsort3(arr, l, r): def swap(arr, s, d): if s != d: tmp = arr[s] arr[s] = ar

交换排序---快速排序算法(Javascript版)

快速排序是对冒泡排序的一种改进.通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,最终达到整个数据变成有序序列. 假设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为基准数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序.值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对

快速排序——PowerShell版

继续读啊哈磊算法有感系列,继续升华.上一篇是冒泡排序,在结尾总结了一下冒泡排序的缺点——时间复杂度O(N*N)太大.这一篇来说一下快速排序,快速排序可以在多数情况下克服冒泡排序的缺点(最坏的情况下和冒泡排序的时间复杂度一样).下面我们先来说说快速排序的思想与过程,与上一篇从过程到思想的思考方式不同,这一次我们的思考过程是从思想到过程—— 快速排序的思想: 利用二分的思想,先在待排序子数组中选定一个基准数(作为中间值).一个左初始位(待排序子数组的左端点位.若对整个数组进行排序,则左端点位为数组的

C#版 选择法、冒泡法、插入法和快速排序法分析与对比(一)

前言 之前老师就讲过了选择法和冒泡法,之后又提到了插入法和排序法,今天做了一个小DEMO,对比了一下四种方法的效率,当然看了很多大牛也博客,其实算法还设计了时间复杂度和空间复杂度,对于这两个概念,我只能从表面上进行理解,其中涉及到了很多数学的问题,所以就不展开写了. 选择排序 冒泡法 插入法 快速排序法 这部分知识比较新,而且内容比较多,所以打算单独另外总结一遍博客,来详细的总结一下这个方法~ DEMO(比较三个算法所用时间) 先说一下设计的思路,生成要求个数的不重复的随机数,将随机数循环赋给l

快速排序及优化(Java版)

快速排序(Quicksort)是对冒泡排序的一种改进.快速排序由C. A. R. Hoare在1962年提出. 一次快速排序详细过程: 选择数组第一个值作为枢轴值. 代码实现: package QuickSort; public class QuickSortRealize { public static void QuickSort(int[] arr){ QSort(arr,0,arr.length-1); } //对顺序表子序列作快速排序 待排序序列的最小下标值low和最大下标值high