zoukankan      html  css  js  c++  java
  • 每周学习日志(八)

    简单排序方法:

    1、直接插入排序方法。

    2、冒泡排序法。

    3、简单选择排序方法。

    其他排序方法:

    1、快速排序法。

    2、堆排序法。

    3、归并排序法。


    方法 平均时间复杂度 最坏时间复杂度 辅助存储空间

    简单排序 O(n^2) O(n^2) O(1)

    快速排序 O(nlogn) O(n^2) O(logn)

    堆排序 O(nlogn) O(nlogn) O(1)

    归并排序 O(nlogn) O(nlogn) O(n)

    结论:

    1、简单排序一般只用于N值较小的情况。

    2、归并排序使用于N值较大的情况。

    3、快速排序是排序方法中最好、最快的方法。


    直接插入排序:将第i个记录插入到前面i-1个已排好序的记录中。

    折半插入排序:将折半查找用于在有序记录r[1……i-1]中确定应插入的位置。

    希尔排序:利用直接插入排序的最佳性质,将待排关键字序列分为子序列,对子序列直接插入排序,使排好序,多次调整,知道基本有序再对序列进行直接插入排序。

    冒泡排序:反复扫描待排序列,过程中顺次比较相邻元素大小,若逆序则交换位置。

    快速排序:以某一元素v作为基准,将待排序列分成前后两段(前段小于v,后端大于/等于v),再分别以前段、后段作快速排序。

    简单选择排序:第i趟简单选择排序是指通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换,共需要i-1趟比较,直到完成。

    堆排序:需要一个记录大小的辅助空间,将向量中的数据看成是一个完全二叉树,利用双亲结点和孩子结点之间的内在关系,来选择关键字最小的记录。

    归并排序:将两个及两个以上的有序表合并成一个新的有序表。

    基数排序:根据低位优先的规则进行排序,比如数字的个十百依次对待排序列排序,直到有序。有分配、收集这两种基本操作。

  • 相关阅读:
    javascript学习6
    javascript学习5
    javascript学习4
    javaccript学习3
    javaccript学习2
    javaccript学习1
    C++ 线性表实现
    深入解析策略模式(转)
    CentOS7安装MySQL
    万能媒体播放器 PotPlayer
  • 原文地址:https://www.cnblogs.com/wananouo/p/13143737.html
Copyright © 2011-2022 走看看