《数据结构导论之时间复杂度》

Posted 杨晓风-linda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《数据结构导论之时间复杂度》相关的知识,希望对你有一定的参考价值。

Ѿ前言

    在数据结构导论中,于己而言时间复杂度算是比较难以计算的,认为对算法逻辑上的理解要求较高,继而小编在这里先总结一些知识点。

Ѿ定义

 

时间复杂度:

 

计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。

 

最坏时间复杂度:

 

对相同输入数据量的不同输入数据,算法时间用量的最大值。

 

平均时间复杂度:

 

对所有相同输入数据量的各种不同输入数据,算法时间用量的平均值。

 

Ѿ知识点

 

Ѽ线性表

 

顺序表实现算法的分析

 

插入算法的平均移动次数约为n/2,时间复杂度为O(n)

 

删除算法最坏情况下,元素移动次数为(n-1),时间复杂度为O(n)

 

                    元素平均移动次数约为(n-1)/2,时间复杂度为O(n)

 

定位算法以参数X与表中结点值的比较为标准操作,平均时间复杂度为O(n)

 

求表长和读表元素算法的时间复杂度为O(1)

 

单链表

 

插入算法InsertLinklis计算量为[n(n-1)]/2,时间复杂度为O(n^2)

 

后插算法时间复杂度为O(n)

 

前插算法时间复杂度为0(n)

 

循环链表

 

双向循环链表是一种对称结构,既可以直接访问前驱结点又可以直接访问后继结点,找前驱结点和后继结点的时间复

 

杂度均为O(1)

 

Ѽ哈夫曼算法

 

平均比较次数为:WPL(T)=

 

 

Ѽ拓扑排序

 

时间复杂度为O(n+e)

 

n:图的顶点个数         e:图的弧的数目

 

Ѽ查找

 

顺序查找、二分查找、索引顺序查找依次的平均查找长度为:

 

ASL(顺序)=(n+1)/2

 

ASL((二分)≈-1

 

ASL(索引顺序)=+1

 

顺序查找效率最低但限制少,二分查找效率最高,但限制最强。索引顺序查找位于二者之间

 

二叉排序树的平均查找长度ASL≤1+

 

Ѽ算法

 

插入排序

 

直接插入排序时间复杂度:O(n^2),稳定的排序方法

 

交换排序

 

冒泡排序时间复杂度为O(n^2),稳定的排序方法

 

快速排序:平均时间性能下,时间复杂度为:n;最坏情况下,即对几乎已是排序好的输入序列,该算法效率

 

低,近似于O(n^2)

 

选择排序

 

直接选择排序:O(n^2),不稳定

 

堆排序:无论是在平均时间性能下还是在最坏情况下,时间复杂度均为n,不稳定

 

归并排序

 

有序序列的合并:算法执行时间为:O(n-h+1)

 

二路归并排序:n,稳定的排序方法


Ѿ总结

            以上关于时间复杂度的总结只是一些知识点的梳理,具体时间复杂度是如何计算的,目前还没有进行组织学习,待学习之后可再与君共勉哦



以上是关于《数据结构导论之时间复杂度》的主要内容,如果未能解决你的问题,请参考以下文章

C++ "链链"不忘@必有回响之双向链表

单源最短路径

扎实打牢数据结构算法根基,从此不怕算法面试系列之007 week01 02-07 简单的复杂度分析

常用排序算法之插入排序

算法导论学习——数据结构

算法导论笔记第6章 堆和堆排序