1冒泡排序:

已知一组无需数据a[1],a[2],a[3],a[4],a[5][a[n],将其按升序排列,首先找出这组数据中最大值,将a[1]与a[2]比较,若a[1]大,则交换两者的值,否则不变,在继续将a[1]与a[3]比较,。。。。最后找出最大值a[n];在用同样的方法找出次大值,依次类推,a[n]就以升序排列;

优点:稳定,比较次数已知;缺点:慢,每次只移动两个数据,移动数据的次数多;

二选择排序:

已知一组无需数据a[1],a[2],a[3],a[4],a[5][a[n],将其按升序排列,首先比较a[1]与a[2]的值,若a[1]大于a[2],则交换两者的值,否则不变,在比较a[1]与a[3]的值,若a[1]大于a[3]则交换两者的值,否则不变,依次类推,得到a[1]肯定是最小的在依次找出次小值,;

优点:稳定,比较次数与冒泡一样,数据移动次数比冒泡少;缺点:相对之下还是慢

三插入排序:

已知一组升序排列数据a[1],a[2]...a[n],一组无序排列数据b[1],b[2],b[3]....b[n],需将二者合并成一个升序数列;首先比较b[1]与a[1]的值,若b1大于a[1],则跳过,比较b[1]与a[2]的值,若b[1]仍然大于a2,则继续跳过,直到b1小于a数组中的某一个数据ax,则将ax-an分别向后移动一位,将b[1]插入ax位置,b2到bm用同样方法插入(若无数组a,可将b1当做n=1的数组a);

优点:稳定,快;缺点:比较次数不一定,比较次数越多,插入点给后的数据移动的越多,特别是数据量庞大的时候,不过链表可以解决这个问题;

四希尔排序(缩小增量排序)

已知一组无序数据a1,a2,a3,a4.。。an;需将其安升序排列,发现当n不大时,插入排序的效果很好,首先取一增量d(d<n),将a1,a(1+d),a(1+2d)。。。列为一组,a2,a(2+d),a(2+2d)。。。列为一组ad,a2d,a3d。。。列为一组,依次类推,在各组内分别用插入排序,然后取d‘小于d,重复上述操作,知道d=1;

优点:快,数据移动少;缺点:不稳定,d的取值多少,应取多少个值,都无法确切知道,只能凭经验;

五快速排序

是冒泡排序的改进版,是目前已知最快的排序算法,已知一组无需数据a[1],a[2],a[3],a[4],a[5][a[n],将其按升序排列,首先任取数据ax作为基准,比较ax与其他数据并排序,使ax排在数据的第k位,并且使a1-a(k-1)中每一个数据都小于ax,a(k+1)-an中的每一个数据都大于ax,然后采用分治的策略分别对a1-a(k-1)与a(k+1)-an两组数据进行快速排序;

优点:极快,数据移动少,缺点:不稳定

几种排序算法的比较转自http://blog.csdn.net/keenweiwei/article/details/3697452的更多相关文章

  1. 排序算法 ----(转载::http://blog.csdn.net/hguisu/article/details/7776068)

    1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表.即:先将序列的第1个记录看成是一个有序 ...

  2. Golang拼接字符串的5种方法及其效率_Chrispink-CSDN博客_golang 字符串拼接效率 https://blog.csdn.net/m0_37422289/article/details/103362740

    Different ways to concatenate two strings in Golang - GeeksforGeeks https://www.geeksforgeeks.org/di ...

  3. spring加载hibernate映射文件的几种方式。转自:http://blog.csdn.net/huiwenjie168/article/details/7013618

    在Spring的applicationContext.xml中配置映射文件,通常是在<sessionFactory>这个Bean实例中进行的,若配置的映射文件较少时,可以用sessionF ...

  4. 比较C++中的4种类型转换方式(转自http://blog.csdn.net/hrbeuwhw/article/details/7884797)

    C++的四种cast操作符的区别 Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意? A:转换的含义是通 ...

  5. 4种方法让SpringMVC接收多个对象(转:http://blog.csdn.net/lutinghuan/article/details/46820023)

    问题背景: 我要在一个表单里同时一次性提交多名乘客的个人信息到SpringMVC,前端HTML和SpringMVC Controller里该如何处理? 第1种方法:表单提交,以字段数组接收: 第2种方 ...

  6. 单点登录的三种实现方式 转自: https://blog.csdn.net/python_tty/article/details/53113612

    单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任.单点登录在大型网站里使用得 ...

  7. <转载> 22种代码味道(Martin Fowler与Kent Beck) http://blog.csdn.net/lovelion/article/details/9301691

    Martin Fowler在Refactoring: Improving the Design of Existing Code(中译名:<重构——改善既有代码的设计>)一书中与Kent ...

  8. Android 利用cursor来进行排序(转至http://blog.csdn.net/yangzongquan/article/details/6547860)

    主要思路是:override move系列的方法,让cursor以自己想要的顺序来移动,从而达到对cursor排序的目的.比如数组A0里有 4(0),3(1),1(2),2(3),括号内为位置,排序后 ...

  9. UML类图几种关系的总结(转载 http://blog.csdn.net/tianhai110/article/details/6339565 )

    http://blog.csdn.net/tianhai110/article/details/6339565

随机推荐

  1. Java 为程序创建日志系统

    使用JAVA创建日志系统有两种方法 1.使用log4j操作日志文件 2.使用系统重定向输出日志信息 方法1:使用log4j操作日志文件(可使用jar或者xml) 步骤1:下载log4j.jar 下载地 ...

  2. (三)siege的使用

    学习: ELK——http://dockone.io/article/3655 docker——http://www.testclass.net/docker/ Android Monkey压力测试— ...

  3. java CDI

    Scope声明周期 http://www.cnblogs.com/yjmyzz/p/javaee-cdi-bean-scope.html

  4. 使用JMETER进行REST API测试

    我确定你在这里是因为你需要加载测试Json Rest API.这并不奇怪,因为Rest API现在越来越受欢迎. 这本指南的目的:帮助您进行负载测试一个Json的 REST API 通过一个具体的例子 ...

  5. CC14:集合栈

    题目 请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈.该数据结构应支持与普通栈相同的push和pop操作. 给定一个操作序列int[] ...

  6. Hibernate5 四种数据源配置

    1.需要知道的: DBCP在hibernate3中以及不再被支持了,由于作者提出过bug,后续版本没有加入对其的支持. 推荐使用proxool,负面新闻最少的连接池 下面的图显示了,Hibernate ...

  7. Django框架之MVT(1)

    Django框架之MVT 灌输: 什么是根目录:就是没有路径,只有域名.  url(r”^$”) 一.     MVT模型 Django的MVT模型 -     Model(模板):和数据库相关,负责 ...

  8. (转)nginx应用总结(2)--突破高并发的性能优化

    原文:http://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并发导致的性能瓶颈问题. ...

  9. 《从0到1学习Flink》—— 如何自定义 Data Source ?

    前言 在 <从0到1学习Flink>-- Data Source 介绍 文章中,我给大家介绍了 Flink Data Source 以及简短的介绍了一下自定义 Data Source,这篇 ...

  10. [HNOI 2012]三角形覆盖问题

    Description 二维平面中,给定   N个等腰直角三角形(每个三角形的两条直角边分别     平行于坐标轴,斜边从左上到右下).我们用三个非负整数( x, y, d)来描   述这样一个三角形 ...