• 第八章总结--排序 数据结构课程终章


    前言--自己内心的小想法:

    虽然本学期接近尾声,老师也没有要求我们写博客了,自己觉得对待一门课还是要有始有终的好,为本学期画上一个完美的句号吧。

    经过一个学期的课程,终于发现自己原来还是可以靠自己去解出一道题目的,有的时候虽然惧怕,胆怯,又或者内心的排斥的想法,但是现在也没有那样的去想了。

    回顾了一个学期,原来我还是学了很多东西的,当然也克服了自己内心的恶魔。

    到了最后,突然有所明悟的感觉,数据结构这本书前期讲存储结构,后期讲查找和排序,其实在一个大的程序中,很多子模块都是通过这些来完成的。

    对于其他的课程也是如此,到了期末,都串起来。

    总结:

    排序的概念

    排序的方式:

    1、插入排序:

      直接插入排序:     一 一比对

      折半插入排序:在已经拍好的序列中插入,适合初始记录无序、n较大的情况

      希尔排序:待排序的关键字基本有序->效率较高      分组插入,先分割(相隔某个增量的记录),对每组进行直接插入排序(不能用于链式结构)

    2、交换排序:

      冒泡排序:左右一 一比对

      快速排序:选一个作为分隔,对其进行左右两端分隔,然后利用递归,一 一划分(不稳定、适用于顺序结构,不适用链式结构)

     

    3、选择排序:

      简单选择排序/直接选择排序:以第一个数进行比较,然后找到里面最小的那一个数后,调换位置,紧接着第二个数开始(还是可以用循环)

      树形选择排序:从树的叶子到根,两两比较,换位

      堆排序:调整堆、建初堆(筛选法)

    4、归并排序:将两个或两个以上的有序表合成一个有序表

    5、基数排序:(分配、回收空间)最简单的:桶排序

    排序方法 时间复杂度 空间复杂度 稳定性
    最坏情况 最好情况 平均情况

      直接插入排序

    O(n) O(n*n) O(n*n) O(1) 稳定
    折半插入排序 O(nlog2n) O(n*n) O(n*n) O(1) 稳定
    希尔排序     O(n^1.3) O(1) 不稳定

    冒泡排序

    O(n) O(n*n) O(n*n) O(1) 稳定
    简单选择排序 O(n*n) O(n*n) O(n*n) O(1) 稳定

    快速排序

    O(nlog2n) O(n*n) O(nlog2n) O(log2n) 不稳定
    堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 不稳定
    归并排序 O(nlog2n) O(nlog2n) O(nlog2n) O(n) 稳定
    基数排序 O(d(n+rd)) O(d(n+rd)) O(d(n+rd)) O(n+rd) 稳定

    写在后面的话:

    以后还是要坚持写博客,无论怎么样,一定要坚持下来,毕竟现在回忆一下,就像一篇篇日记和心得,供自己查看,还是能收获很多的。

    即使有点不舍?《数据结构》也已经上完课了,马上就要考试了,希望大家都能取得好成绩吧...

     

  • 相关阅读:
    cesium图形上加载图片
    cesium可视化空间数据2
    linux命令之用户和用户组
    YARN应用程序开发和设计流程
    Yarn中几个专用名称
    break、continue、return之间的区别与联系
    kafka的相关操作脚本
    scala函数进阶篇
    scala的基础部分
    视图
  • 原文地址:https://www.cnblogs.com/JeffKing11/p/11016414.html
Copyright © 2020-2023  润新知