快速排序算法

原创 2015年07月08日 10:34:51

      快速排序算法的思路是:在N个数据中随机选择一个下标index,通过一次快速排序,将比data[index]小的数据放到index之前,比data[index]大的数据放到index之后,最后返回index,以index为基准,进行递归排序,即可完成快速排序。

       下面举个一次快速排序的实例:

        原数列:49  38  65 97 76 13 27

        在这组数据中,start=1,end=7,选index=6,即关键字是65.

        首先,data[index]与data[end]进行交换,数列变为:49 38 27 97 76 13 65

        下面我们用跑指针的方式进行排序。设置指针small=0;index=start遍历数列if   data[index]>data[end]  不作任何处理,直接index++,跑循环即可。if    data[index]<data[end] (这种情况下,我们要做细致处理) 先将small++,再判断small指针与index指针的位置关系,如果二者不相等,说明data[small]与data[index]之间的数比data[end]要大。而且,data[small]>data[end],data[index]<data[end],将data[small]与data[index]交换,继续遍历。完成后将small++,交换data[small]与data[end],返回small作为分界点继续递归。

  大笑index指向比end小的,small指向比end大的数据。

尝试使用python实现快速排序算法

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
  • python613
  • python613
  • 2017年02月01日 22:38
  • 817

Java快速排序算法的实现

java工程师笔试必考算法题
  • wsxujiacheng
  • wsxujiacheng
  • 2016年11月01日 10:28
  • 275

真正的快速排序算法javascript实现

原理分析: 其基本思想是选取其中一个值,经过一轮排序,将小于此值的数据放置其左(右)边,大于此值的数据放置于其右(左)边, 这样就完成一次快速排序,进而通过递归对左右两侧分别进行快速排序,直到排序组内...
  • u012545279
  • u012545279
  • 2013年12月19日 11:43
  • 2602

【图文解释】快速排序算法

高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。 假设我们现在对“6  1  2 7  9  3  4  5 10  8”这个...
  • guomutian911
  • guomutian911
  • 2015年11月18日 20:38
  • 898

Java实现算法之快速排序

本文参考了:http://blog.csdn.net/morewindows/article/details/6684558 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因...
  • Rebirth_Love
  • Rebirth_Love
  • 2016年05月08日 14:21
  • 1084

快速排序算法的C/C++语言实现

这是很多课本教材上的算法描述,主要是递归版本的。 #include //26/10/12 10:00 //一次划分 int one_partition(int a[],int i,int j)...
  • dujian996099665
  • dujian996099665
  • 2012年11月14日 11:33
  • 933

经典算法之一:快速排序

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个...
  • hurmishine
  • hurmishine
  • 2016年12月20日 21:28
  • 1121

快速排序算法详解与实现

快速排序是一种分治排序算法。广泛认为它是解决一般问题的最佳排序算法。同插入排序一样,快速排序也属于比较排序的一种,而且不需要额外的存储空间。在处理中到大型数据集时,快速排序是一个比较好的选择。 由于快...
  • kevin_Luan
  • kevin_Luan
  • 2014年07月13日 11:57
  • 3055

快速排序算法原理,实现,以及时间复杂度分析

#include using namespace std;int count=0; int scount=0; int cycled=0;void output(int *a,int n){ ...
  • xdyzyh
  • xdyzyh
  • 2016年09月07日 20:19
  • 1510

单链表快速排序算法实现

单链表快速排序算法实现 算法思想:对于一个链表,以head节点的值作为key,然后遍历之后的节点,可以得到一个小于key的链表和大于等于key的链表;由此递归可以对两个链表分别进行快速。这里用到了...
  • lianqi15571
  • lianqi15571
  • 2014年03月10日 13:42
  • 948
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:快速排序算法
举报原因:
原因补充:

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