不同种类的数据结构应用场合

通用数据结构:数组,链表,树,哈希表;(它们之所以称之为通用数据结构,是因为它们通过关键字的值来存储并查找数据,栈等特殊结构正好相反,它们只允许存取特定的数据。

就如No Free Lunch定理一样,使用最快的结构未必是最好的方案,这些最快的结构也有缺陷。

 

数组和链表是最慢的,树相对较快,哈希表是最快的。

如果数据量小,则使用链表或数组,其中若数据量不可预知,则使用链表,若可以预知,则查看查找速度是否比插入速度更重要,若是,则使用有序数组,若不是则使用无序数组。

如果数据量大的话,就是用哈希表和数,若要求查找和插入的速度必须很快则使用哈希表,若不是,则判断关键字分布是否随机,若是,则使用二叉搜索树,若不是,使用平衡树。

选数据结构的原则之一:请先从简单的数据结构入手考虑,除非它们明显很慢,否则就用数组或链表编写程序,只有发现这些简单结构的性能太慢时,才选择尝试更复杂的数据结构。

在操作对象的速度上,java引用有极大优势,java只存储引用而不是实际对象,因而“移动”对象的速度也不依赖于对象的大小,而只是考虑对象的引用,因而对象本身的大小就显得不太重要了。

 

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

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

图:邻接矩阵,邻接表;

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

 

转载于:https://www.cnblogs.com/mybloghl/p/3620281.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值