zoukankan      html  css  js  c++  java
  • 排序算法

    排序就是将一组杂乱无章的数据按一定的规律(关键字)排列起来(或增或减)。在查找数据之前,我们可以通过排序操作对数据进行排序,以此方便数据查找。

    排序的规律成为:关键字

    关键字分为主关键字和次关键字

    主关键字:通过主关键字进行排序,排序的结果是唯一的。常用的id

    次关键字:通过次关键字进行排序的结果可能不是唯一的。姓名。性别等

    稳定性:通过次关键字排序时,如果存在两条数据的次关键字的值相等,这两条数据经过算法排序后,依旧按照排序前的先后顺序,那么则称这个排序算法是稳定的。

    衡量排序算法的标准:

    1、所需要的平均比较次数

    2、所需要的平均移动次数

    3、所需要的平均辅助空间

    内排序和外排序

    内排序:实质在排序期间数据对象全部存放在内存的排序;这个过程是一个逐步扩大记录的有序序列长度的过程。数据记录序列,存在无序序列和有序序列两个区域。

    外排序:是指在排序期间全部对象个数太多,不能同时存放在内存,必须根据排序过程的要求,不断地在内存和外村之间移动的排序。

    排序的分类:基于不同的“扩大”有序序列长度的方法,内部排序方法可分为以下几个类别:

    1、插入类(直接插入排序、折半插入排序、2——路插入排序、希尔排序)

    2、交换类(冒泡排序、快速排序)

    3、选择类(直接选择排序、锦标赛排序、堆排序)

    4、归并类(通过“归并”两个或两个以上的记录有序序列子集,逐步增加记录有序序列的长度)

    插入排序:每一步将待排序对象,按照其排序码(关键字)的大小,插入到已经排好序的有序序列里的适当位置。根据寻找插入点方式的不同,插入排序又可分为:

    直接插入排序、折半插入排序、2——路插入排序、希尔排序。

    交换排序:两两比较待排序对象的排序码(关键字),如果发生逆序,则交换之,知道所有对象都排好序为止。

    选择排序:通过从无序序列中查找出排序码(关键字)最大值的数据记录或最小值的数据记录,将其按一定的方法进行一次移动到有序序列。

    归并排序:主要是二路归并排序,通过“归并”两个或两个以上的记录有序序列子集,逐步增加记录有序序列的长度

  • 相关阅读:
    C# Lambda表达式
    .NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy
    SQL中的case when then else end用法
    WPF gif图片不动问题解决
    async(C# 参考)
    File类 ReadAllBytes() ReadAllLines() ReadAllText()
    二维码生成的常用数据格式
    在chrome console加入jquery库
    Reflector反编译WinForm程序重建项目资源和本地资源
    使用Settings.settings存储用户的个性化配置
  • 原文地址:https://www.cnblogs.com/huanqiuxuexiji/p/9164748.html
Copyright © 2011-2022 走看看