数据结构与算法

数据元素之间的相互关系称为结构。

数据结构的本质:如何将现实世界中的各种各样的数据放入内存中,并且如何在内存中操作这些数据,如何评价这些存储方案和操作方法。

将现实世界的数据组织成逻辑结构,再把逻辑结构的数据映射到物理结构(比如链表是逻辑线性,物理不连续)。

数据类型指的是一组值和一组对这些值得操作的集合。是组织信息的一种自然方式。

每当遇到逻辑上相关的不同类型的数据时,定义一个抽象数据类型。

抽象数据类型(ADT):一种能够对使用者隐藏数据表示的数据类型。(如用java类实现抽象数据类型,用一组静态方法实现一个函数库)


通用数据结构:数组、链表、数、哈希表。(通过关键字的值来存储并查找数据)

专用数据结构:栈、队列、优先级队列。

排序:插入排序、希尔排序、快速排序、归并排序、堆排序。

图:邻接矩阵、邻接表

外部存储:顺序存储、索引文件、B-树、哈希方法


数组:数据量较小,数据量的大小可预测。

链表:存储数据量不能预知或需要频繁地插入删除数据元素。

二叉搜索树: 提供快速的O(logN)级的插入、查找和删除。遍历的时间复杂度为O(N)。如果可以保证数据是随机输入的,就不需要平衡二叉树。有序遍历、最大最小值提取。

平衡树:红黑树和2-3-4树。不论输入是否有序,都能保证性能为O(logN)。

哈希表:速度最快,以数组作为基本数据结构。所以,必须预先精确地知道存储的数据量。

数据结构查找插入删除遍历
数组O(N)O(1)O(N)-
有序数组O(logN)O(N)O(N)O(N)
链表O(N)O(1)O(N)-
有序链表O(N)O(N)O(N)O(N)
二叉树(一般情况)O(logN)O(logN)O(logN)O(N)
二叉树(最坏情况)O(N)O(N)O(N)O(N)
平衡树(一般和最坏情况)O(logN)O(logN)O(logN)O(N)
哈希表O(1)O(1)O(1)-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值