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趟比较,直到完成。

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

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

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

  • 相关阅读:
    洛咕 P2403 [SDOI2010]所驼门王的宝藏
    洛咕 P2480 [SDOI2010]古代猪文
    洛咕 P2447 [SDOI2010]外星千足虫
    CF618F Double Knapsack 构造、抽屉原理
    Educational Codeforces Round 62
    CF908G New Year and Original Order 数位DP
    CF833D Red-Black Cobweb 点分治、树状数组
    Codechef CNTL Counting is life 生成函数
    LOJ2527 HAOI2018 染色 生成函数、二项式反演、NTT
    Luogu4916 魔力环 莫比乌斯反演、组合、生成函数
  • 原文地址:https://www.cnblogs.com/wananouo/p/13143737.html
Copyright © 2011-2022 走看看