数据结构知识总结
逻辑关系→计算机内部的表示→具体操作如何实现
- 存储中的几种实现方式:顺序实现/链接实现/散列存储/索引存储
- 大表示法:给出算法在问题规模达到一定程度后运行时间增长率的上界。(,给出下界;,相等;,严格小于)
集合结构
- 表示常借鉴线性表或者树。唯一一个仅适合处理集合的数据结构是散列表。
查找
静态查找表(元素个数及其值不允许变化)
- 顺序查找表:0号单元做岗哨,无论有序还是无序,时间复杂度为
- 二分查找:查找有序的元素
int low=1,high=size,mid;
while(low<=high){
mid=(low+high)/2;
if (x==data[mid].key)
return mid;
if (x<data[mid].key){
high = mid-1;
}
else
low = mid+1;
}
- 插值排序:
- 把上边代码中
mid
计算方法改为mid=low+((x-data[low].key)/(data[high].key-data[low].key))*(high-low-1)
- 效率高须满足:计算代价<查找代价;数据有序且均匀。
- 把上边代码中
- 分块查找:
- 先查找索引表(有序:顺序or二分),再在块内查找(一般无序:顺序查找)
- 时间性能高于顺序查找低于二分查找,大量数据须保存在外存时是一种很好的方法。