数据结构总结
2015-10-18 15:27
302 查看
数据结构是计算机组织数据和存储数据的方式。更进一步的说,数据结构是指一组相互之间存在一种或多种特定关系的数据的组织方式和它们在计算机内的存储方式,以及定义在该组数据上的一组操作。合理的数据结构课降低程序设计的复杂性,提高程序执行的效率。
从数据结构的定义可以看出,数据结构导论其实就分为两部分,结构和算法,其次就是对数据结构的操作,以及相应操作对应的算法分析:
数据操作部分分为五项,分别是建立、查找、读取、插入、删除。就拿数组来说,如果将数据存入数组中,首先创建一个数组,也就是建立;存入后需要查找某一元素,也就是查找操作;如果想获得该元素,也就是读取操作;另外我可能想把数组中的元素删除或者插入一个新元素,这就是插入和删除操作。
存储共有四种形式,分别是顺序存储、链式存储、索引存储、散列存储。顺序存储就是顺序表;链式存储是链表,包括单链表、循环链表、双向循环链表;索引存储就是查找表中的索引顺序表;散列表就是哈希表,利用散列函数形成的存储形式,在散列表中,要注意散列函数的确定和避免冲突的问题。
既然数据结构有相应的操作,对应的就有相应操作的算法。算法具有正确性、易读性、健壮性、时空性。判断算法的复杂度有两种方式,一种是时间复杂度,一种是空间复杂度。一般来说,空间复杂度容易变,所以经常用时间复杂度来评判算法。
接下来就是最大的一块了,也是这本书最重要的部分,那就是结构。结构分为逻辑结构和存储结构,逻辑结构包括集合、线性结构、树形结构、图结构。对应的存储结构就包括数组、线性表、树和图,另外还有一个是查找表,查找表分为不同类型,不同类型所对应的逻辑结构也不同,可以说查找是一种特殊的存储结构。每一种存储结构都对应一种逻辑结构。
这本书的最后一章是排序,排序属于数据处理中一种重要的很常用的运算,一般情况下,排序操作在数据处理过程中要花费许多时间,为了提高计算机的运行效率,需要选取合适的算法。
下面附上一张整本书的大图:
总结
没有考试的压力下去看书,有种别样的味道,去总结也一样。突然发现好多东西一下一下都串起来了,而不是考试前那种想法,看什么都是考点,看什么都得掌握,觉得整本书都只是考试。
从数据结构的定义可以看出,数据结构导论其实就分为两部分,结构和算法,其次就是对数据结构的操作,以及相应操作对应的算法分析:
数据操作部分分为五项,分别是建立、查找、读取、插入、删除。就拿数组来说,如果将数据存入数组中,首先创建一个数组,也就是建立;存入后需要查找某一元素,也就是查找操作;如果想获得该元素,也就是读取操作;另外我可能想把数组中的元素删除或者插入一个新元素,这就是插入和删除操作。
存储共有四种形式,分别是顺序存储、链式存储、索引存储、散列存储。顺序存储就是顺序表;链式存储是链表,包括单链表、循环链表、双向循环链表;索引存储就是查找表中的索引顺序表;散列表就是哈希表,利用散列函数形成的存储形式,在散列表中,要注意散列函数的确定和避免冲突的问题。
既然数据结构有相应的操作,对应的就有相应操作的算法。算法具有正确性、易读性、健壮性、时空性。判断算法的复杂度有两种方式,一种是时间复杂度,一种是空间复杂度。一般来说,空间复杂度容易变,所以经常用时间复杂度来评判算法。
接下来就是最大的一块了,也是这本书最重要的部分,那就是结构。结构分为逻辑结构和存储结构,逻辑结构包括集合、线性结构、树形结构、图结构。对应的存储结构就包括数组、线性表、树和图,另外还有一个是查找表,查找表分为不同类型,不同类型所对应的逻辑结构也不同,可以说查找是一种特殊的存储结构。每一种存储结构都对应一种逻辑结构。
这本书的最后一章是排序,排序属于数据处理中一种重要的很常用的运算,一般情况下,排序操作在数据处理过程中要花费许多时间,为了提高计算机的运行效率,需要选取合适的算法。
排序算法 | 最好时间复杂度 | 最坏时间复杂度 | 平均时间复杂度 | 辅助空间 | 稳定性 |
直接插入 | O(n) | O(n2) | O(n2) | O(1) | 稳定 |
简单选择 | O(n2) | O(n2) | O(n2) | O(1) | 不稳定 |
冒泡排序 | O(n) | O(n2) | O(n2) | O(1) | 稳定 |
快速排序 | O(nlogn) | O(nlogn) | O(n2) | O(1) | 不稳定 |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
总结
没有考试的压力下去看书,有种别样的味道,去总结也一样。突然发现好多东西一下一下都串起来了,而不是考试前那种想法,看什么都是考点,看什么都得掌握,觉得整本书都只是考试。
相关文章推荐
- Lua教程(七):数据结构详解
- 总结一周内学习的Sql经验(一)
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 数据结构之Treap详解
- PHP-MySQL教程归纳总结
- JavaScript数据结构和算法之图和图算法
- javascript中几个容易混淆的概念总结
- jquery学习总结(超级详细)
- JavaScript 对象深入学习总结(经典)
- ASP连接11种数据库语法总结
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- 基于C++中常见编译错误的总结详解
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi