• 排序技术


    一、插入排序

      直接插入排序:依次将待排序序列中的每一个记录插入到已排好序的序列中,直到全部记录都排好序;(折半插入排序)O(n^2)

      希尔排序:先将整个待排序记录序列分割成若干个子序列,在子序列内分别进行直接插入排序,待整个序列基本有序时,再对全体记录进行一次直接插入排序;O(nlog2n)-O(n^2)

    二、交换排序

      起泡排序:两两比较相邻记录,如果反序则交换,直到没有反序记录为止;O(n^2)

      快速排序:首先选一个轴值,将待排序列划分成两部分,左侧记录均小于或等于轴值,右侧记录均大于或等于轴值,然后分别对这两部分重复上述过程,直到整个序列有序;O(nlog2n)

    在快速排序中,记录的比较和移动从两端向中间进行,值较小的记录一次就能从后面移动到前面,记录移动的距离较远,从而减少了总的比较次数和移动次数;

    三、选择排序

      简单选择排序:第i趟排序在待排序序列ri---rn中选取最小记录,并和第i个记录交换作为有序序列的第i个记录;O(n^2)

      堆排序:首先将待排序序列构造成一个堆,此时,选出了堆中所有记录的最大者即堆顶记录,然后将堆顶记录移走,并将剩余的记录再调整成堆,这样就找出了次大的记录,依次类推,直到堆中只有一个记录。O(nlog2n)    简单选择排序在一趟排序中仅选出最小记录,没有把一趟的比较结果保存下来,因而记录的比较次数较多。堆排序在选出最小记录的同时,也找出较小记录,减少了选择的比较次数,从而提高整个排序的效率。

    四、归并排序

    二路归并排序:将待排序序列划分为两个长度相等的子序列,分别对两子序列进行排序,得到两个有序子序列,再将这两个有序子序列合并成一个有序序列;O(nlog2n)---递归,非递归;

    五、基数排序

    借助对多关键码进行分配和收集的思想对单关键码进行排序;将待排序记录看成由若干个子关键码复合而成,然后采用分配和收集的方法采用LSD(最次位优先)方法进行排序; 

  • 相关阅读:
    柱状图
    开源版本Visifire的应用
    Jmeter录制脚本-BadBoy
    Jemter环境搭建
    DOS命令
    OSI七层模型
    Google浏览器PostMan插件版安装步骤
    理解JavaScript的caller,callee,call,apply
    .net http请求
    使用命令对象代替switch语句的写法示例
  • 原文地址:https://www.cnblogs.com/Cloud-king/p/8877590.html
Copyright © 2020-2023  润新知