经典排序算法 - 快速排序Quick sort
原理,通过一趟扫描将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列
举个例子
如无序数组[6 2 4 1 5 9]
a),先把第一项[6]取出来,
用[6]依次与其余项进行比较,
如果比[6]小就放[6...
分类:
编程语言 时间:
2014-12-16 13:35:36
阅读次数:
171
第一种方法使用随机pivot,使得尽可能平均二分序列,而实际上一般来说需要排序的集合往往是乱序的,无需重新生成随机数作为pivot,大可使用固定位置的数作为pivot,这样便可以适应绝大多数情况,并且简化了逻辑,便有了第二种simple quick Sort。#排序1万个乱序:simple QS: ...
分类:
其他好文 时间:
2014-11-17 17:24:14
阅读次数:
329
在前面介绍的排序算法中,最快的排序算法为归并排序,但是归并排序有一个缺陷就是排序过程中需要O(N)的额外空间。本文介绍的快速排序算法时一种原地排序算法,所需的额外空间复杂度为O(1)。
算法介绍:快速排序其实一种根据需找某个元素的具体位置进行排序的方法。比如所存在如下数组
选择第一个元素5,找到5最终的位置,即5的左边的数都小于或者等于5,右边的数都大于或者等于5.
从"6"开...
分类:
编程语言 时间:
2014-11-16 23:09:45
阅读次数:
370
近来想学习一下python很算法,用python实现了一下快速排序:#pythondef quick_sort(array, length): if length i): if array[j]array[j]: array[j] = ar...
分类:
编程语言 时间:
2014-11-16 14:31:10
阅读次数:
202
//快速排序void Quick_Sort(int *a,int low,int high){ int Partition(int *a,int low,int high); int mid; if(lowmid); if(i>=j)break; temp=a[i]; a[i]=a[j]; ...
分类:
编程语言 时间:
2014-11-15 21:41:57
阅读次数:
347
2. 交换排序—快速排序(Quick Sort)基本思想:1、选择一个基准元素,通常选择第一个元素或者最后一个元素。2、通过一趟排序将待排序的记录分割成独立的俩部分,其中一部分记录元素值均比基准元素值小,另一部分记录元素的值均大于基准元素值。3、此时基准元素在其排好序后的正确位置。4、然后分别对这俩...
分类:
编程语言 时间:
2014-11-08 15:13:14
阅读次数:
334
概述插入排序直接插入排序Straight Insertion Sort 插入排序希尔排序Shells Sort 选择排序简单选择排序Simple Selection Sort选择排序堆排序Heap Sort 交换排序冒泡排序Bubble Sort交换排序快速排序Quick Sort归并排序Merge...
分类:
编程语言 时间:
2014-11-04 12:59:07
阅读次数:
360
PHP中的内置函数采用的算法是快排。下面是PHP实现的快排 1 function quick_sort($array) { 2 if (count($array) <= 1) return $array; 3 4 $key = $array[0]; 5 ...
分类:
编程语言 时间:
2014-10-27 19:14:51
阅读次数:
168
http://www.cnblogs.com/archimedes/p/quick-sort-algorithm.html
分类:
编程语言 时间:
2014-10-24 00:08:14
阅读次数:
378
快速排序算法(quick sort)是对冒泡排序的一种改进,是目前内部排序中速度最快的一种排序方法。基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字比另一部分记录的关键字小,则可对这两部分记录分别继续进行排序,以达到整个序列有序。 整个算法的时间复杂度是:O(nlog2....
分类:
编程语言 时间:
2014-10-12 13:41:38
阅读次数:
118