快速排序(quick sort) C++

原创 2018年04月15日 14:23:33

        快速排序是个递归的过程,采取分而治之的思想。直接举例:
有10个数:1,3,7,9,5,8,10,2,4,6;

第一步:取最后一个数 6 为节点:
第二步:将小于6的放到左边,大于6的放到右边,结果:1,2,5,2,4,8,10,9,7,6(6为节点)
第三步:将6和8进行交换,结果:1,2,5,2,4,6,10,9,7,8(6为节点),小于6的在左边,大于6的在右边,整个过程的算法的复杂度为O(n);
第四步:将节点的位置返回,6是第6个数,就返回位置5。
第五步:递归调用:对左边5个数进行前4步操作,右边4个数进行前4步操作。
前四步伪代码《算法导论》:
PARTITION(A,p,r)    
x=A[r]
i=p-1
for j=p to r-1
    if  A[j]<=x
          i=i+1
          swap(A[i],A[j])   //完成前2步操作
swap(A[i+1],A[r])      //完成第3步操作
return i+1     //返回节点的位置

递归的伪代码:

QUICKSORT(A,p,r)

if   p<r

q=PARTITION(A,p,r)   //对数组进行初步整理

QUICKSORT(A,p,q-1)   //递归节点6左边的数

QUICKSORT(A,q+1,r)   //递归节点6右边的数

完整程序如下:
结果:
此程序最难的部分在于priotSwap这个函数,自己手动排几个数,就能明白其中的原因了。



数据结构 - 快速排序(Quick Sort) 详解 及 代码(C++)

快速排序(Quick Sort) 详解 及 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 快速排序(Quick Sort): 通过一趟排序...
  • u012515223
  • u012515223
  • 2014-04-25 17:18:00
  • 4356

排序算法之快速排序<Quick_Sort>及其C语言代码实现

快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比...
  • gl486546
  • gl486546
  • 2017-05-28 16:33:21
  • 816

快速排序C++源代码

  • 2015年08月20日 22:47
  • 564B
  • 下载

深入解析快速排序(Quick Sort)

快速排序是由图灵奖获得者、计算机语言设计大佬C. A. R. Hoare在他26岁时提出的。说起C. A. R. Hoare老爷爷,可能很多人的第一印象就是快速排序,但是快排仅仅是他人生中非常小的成就...
  • utimes
  • utimes
  • 2016-08-10 14:03:16
  • 2469

快速排序(Quicktsort)之Java实现

快速排序算法介绍 快速排序和归并排序都使用分治法来设计算法,区别在于归并排序把数组分为两个基本等长的子数组,分别排好序之后还要进行归并(Merge)操作,而快速排序拆分子数组的时候显得更有艺术,取一个...
  • kimylrong
  • kimylrong
  • 2013-12-05 13:14:31
  • 42993

【内部排序】五:快速排序(Quick Sort)详解与代码

接着上一篇,这篇详解快速排序。快速排序是由冒泡排序改进而得的,采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 分治法的基本思想    分治法的基本思想是:...
  • zhoubin1992
  • zhoubin1992
  • 2015-04-20 22:51:20
  • 1495

quick sort(快速排序)

转载自:http://java2novice.com/java-sorting-algorithms/quick-sort/ Quicksort or partition-excha...
  • u011404670
  • u011404670
  • 2017-02-04 14:29:36
  • 1072

4、快速排序法QuickSort()+Partition()

快速排序法QuickSort()+Partition()
  • cmm0401
  • cmm0401
  • 2017-03-20 21:20:42
  • 425

quick_sort(快速排序)c语言实现

晚上看算法导论,复习了一下快速排序。 快速排序最坏运行效率为o(n2),就是它已经排序好的情况下。 算法c语言代码如下 /***************************************...
  • way88liu
  • way88liu
  • 2015-07-08 09:56:21
  • 1120

快速排序法(QuickSort)c++实现

还是以军训中的队形排列为例:第一步:教官面对一列无序的队伍,他指着最右边的一个人A说:“比他高的站他右边,比他矮的站他左边。”完成之后,队伍被他分割成了两列,第一列:比A矮的在A的左边;第二列:比A ...
  • justmeh
  • justmeh
  • 2009-10-27 17:50:00
  • 4179
收藏助手
不良信息举报
您举报文章:快速排序(quick sort) C++
举报原因:
原因补充:

(最多只允许输入30个字)