快速排序:是对冒泡排序的一种改进。

  什么是冒泡排序:简单一点就是冒气泡。极值数据会到达数据的顶端。

  实现步骤:建立一个数据排列标准,从大到小还是从小到大。

      【从大到小排列】:从第一个数据开始遍历,比较相邻两个数据的大小,大的放前面,小的放后面。遍历一遍以后最小的就到了最后面了。

                然后继续,遍历第二遍,第二小的就到了倒数第2个了。

                以此类推。。。。

      【从小到大排列】:从第一个数据开始,比较相邻两个数据的大小,小的放前面,大的放后面。依此。

  N个元素排列,需要遍历N-1次。也就是数组最大的下标。每一次比较依次递减。为N-1 到 0.不难算出对于N个元素的冒泡排序运算次数。

  

  快速排序的原理:将数据无穷按整体大小细分。

  对于N个元素来说。

  举个例子:100个人随机的在操场上玩耍,老师说:咱们来排个队,从矮到高,听我指挥。你们先排成一列,不管高矮。

  好,拍成一列了。老师说:比第一个人高的全部占到左边一列。这时排好了。

  然后老师又说:现在大家都看到了吧。你们现在是两列了。现在开始,我说一个标准,你们按照标准来。

  即:比一列的第一个人矮的重新在左边开一列,其他人不动。相同身高的,到新的一列去(或者不动),直到最后大家排成一排。

  

  从一列变为一行,如果单纯采用冒泡排序的话,付出的空间代价是什么?需要用到一个Temp空间来作为数据交换。但是对于快速排序来说,需要的空间显然不是申请一个变量就能解决的问题。由于快速排序用到了递归的思想,具体的空间需要计算了。

快速排序(Quicksort)的更多相关文章

  1. 算法实例-C#-快速排序-QuickSort

    算法实例 ##排序算法Sort## ### 快速排序QuickSort ### bing搜索结果 http://www.bing.com/knows/search?q=%E5%BF%AB%E9%80% ...

  2. 快速排序(quicksort)算法实现

    快速排序(quicksort)是分治法的典型例子,它的主要思想是将一个待排序的数组以数组的某一个元素X为轴,使这个轴的左侧元素都比X大,而右侧元素都比X小(从大到小排序).然后以这个X在变换后数组的位 ...

  3. 归并排序(MergeSort)和快速排序(QuickSort)的一些总结问题

    归并排序(MergeSort)和快速排序(QuickSort)都是用了分治算法思想. 所谓分治算法,顾名思义,就是分而治之,就是将原问题分割成同等结构的子问题,之后将子问题逐一解决后,原问题也就得到了 ...

  4. json数据中的某一个字段进行快速排序quicksort

    快速排序(Quicksort)是对冒泡排序的一种改进,是一种分而治之算法归并排序的风格. 核心的思想就是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小 ...

  5. 排序算法四:快速排序(Quicksort)

    快速排序(Quicksort),因其排序之快而得名,虽然Ta的平均时间复杂度也是O(nlgn),但是从后续仿真结果看,TA要比归并排序和堆排序都要快. 快速排序也用到了分治思想. (一)算法实现 pr ...

  6. 随手编程---快速排序(QuickSort)-Java实现

    背景 快速排序,是在上世纪60年代,由美国人东尼·霍尔提出的一种排序方法.这种排序方式,在当时已经是非常快的一种排序了.因此在命名上,才将之称为"快速排序".这个算法是二十世纪的七 ...

  7. 这个代码怎么改??Help快速排序 quicksort

    #include<stdio.h>int a[101],n;void quicksort(int left,int right){     int i,j,t,temp;     if(l ...

  8. 快速排序QuickSort

    前几天实现了直接插入排序.冒泡排序和直接选择排序这三个基础排序.今天看了一下冒泡排序的改进算法,快速排序.单独记录一下,后面还有归并和基数排序等 快速排序 1.选择一个支点默认为数组第一个元素及arr ...

  9. C/C++ 快速排序 quickSort

    下面的动画展示了快速排序算法的工作原理. 快速排序图示:可以图中在每次的比较选取的key元素为序列最后的元素. #include <stdio.h> #include <stdlib ...

  10. 排序算法TWO:快速排序QuickSort

    import java.util.Random ; /** *快速排序思路:用到了分治法 * 一个数组A[0,n-1] 分解为三个部分,A[0,p - 1] , A[p] , A[p + 1, n-1 ...

随机推荐

  1. 如何以nobody用户执行命令?

    最近在logstash中使用nobody用户启动logstash,一想,nobody用户的shell不是/sbin/nologin吗? 不能登录执行命令呀? 于是看了一下它的启动脚本,是使用其他方式进 ...

  2. kaili camera

    #lsusb #dmesg | grep uvc #apt-get install guvcview cheese

  3. mysql循环获取结果集

    do { MYSQL_RES* res = mysql_store_result(con); ) { MYSQL_ROW row; if (row = mysql_fetch_row(res)) { ...

  4. 股市非常态,CCI指标买卖点实例图解

    CCI指标即顺势指标,是唐纳德·蓝伯特于上世纪80年代提出的,是一种比较新颖的技术指标.CCI指标是专门用来衡量股价是否超出常态分布范围,是一种 超买超卖类指标,但它与其他超买超卖型指标又有自己比较独 ...

  5. winSocket数据传输

    服务器端: #include <WINSOCK2.H> #include <stdio.h> #pragma comment(lib,"ws2_32.lib" ...

  6. UITableViewCell的separator分隔线设置失效

    // 处理separator -(void)viewDidLayoutSubviews { if ([self.tableView respondsToSelector:@selector(setSe ...

  7. asp.net常用函数表

    文章转载于[IT花园]:http://www.itgarden.com.cn/showtopic-29.aspx Abs(number) 取得数值的绝对值. Asc(String) 取得字符串表达式的 ...

  8. trace enabled

    <system.web> <trace enabled="true" localOnly="true" pageOutput="tr ...

  9. Autofac.Integration.Mvc分析

    Autofac.Integration.Mvc static ILifetimeScope LifetimeScope { get { return (ILifetimeScope)HttpConte ...

  10. XML模块

    XML 例子: # -*- encoding:utf-8 -*- import requests from xml.etree import ElementTree as ET f = request ...