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. ps 命令参数解释

    转自:https://www.cnblogs.com/fps2tao/p/7692482.html A 显示所有进程(等价于-e)(utility)-a 显示一个终端的所有进程,除了会话引线-N 忽略 ...

  2. (转) Linux命令详解-date

    Linux命令详解-date 原文:https://www.cnblogs.com/Dodge/p/4278292.html 在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到 ...

  3. python实现批量远程执行命令及批量上传下载文件

    #!/usr/bin/env python # -*- coding: utf- -*- # @Time : // : # @Author : xuxuedong # @Site : # @File ...

  4. 《深入理解java虚拟机》笔记(3)实战:OutOfMemoryError异常

    一.Java堆溢出 测试代码: /** * <p>Java堆异常测试</p> * <code>VM Args: -Xms20m -Xmx20m -XX:+HeapD ...

  5. MapReduce基本流程与设计思想初步

    1.MapReduce是什么? MapReduce是一种编程模型,用于大规模数据集的并行运算.它借用了函数式的编程概念,是Google发明的一种数据处理模型. 主要思想为:Map(映射)和Reduce ...

  6. 【干货分享】大话团队的GIT分支策略进化史

    封面 作为一名85后的技术男,一转眼10年过去了(一不小心暴露了年龄,虽然我叫18岁fantasy),亲手写代码已经是5年前了,目前主要负责公司的软件产品的规划和设计(所以最近写的东西也主要与设计和产 ...

  7. undefined is not a function

    具体报错 TypeError: c:\Users\Administrator\WebstormProjects\blogtest\views\index.ejs:1 >> 1| <% ...

  8. wepy开发踩坑记录

    与vue的不同 methods对象只存放tap等事件触发时的方法 events对象只存放$emit及$broadcast方法触发的事件 自定义方法及属性放在与methods平级的位置 props是动态 ...

  9. C# 实现本地化日志管理

    1.新建一个类库解决方案 CommnoLog 2.新建两个文件夹 2.1FileUtil.cs  代码如下 public static class FileUtil { /// <summary ...

  10. Flask 学习系列(四)---Jinjia2 模板继承

    1.基模板 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...