数据结构第七章小结

第七章主要学习了查找

在折半查找中,需要注意的是:
(1)二分查找不适合动态查找,因为要移动数据。
(2)另外,比较x与a[mid]时,如果两者相等,则return mid;如果小于,则l不变,r=mid-1;若大于,则l=mid+1。
折半查找的时间复杂度为O(log2n),折半查找的效率比顺序查找高,但只适用于有序表,且仅限于顺序存储结构。
散列函数的构造要根据元素的特性来构造:函数计算要简单;函数的值域要在计算范围之内。
最重要的是除留余数法,H(key)=key%p,可以选p为小于表长的最大质数。
处理冲突的方法包括开放地址法与链地址法,其中,开放地址法分为线性探测法、二次探测法与伪随机探测法,线性探测法的公式为Hi=(H(key)+di)%m  i=1,2,k

 

1 int Search_Seq(SSTable ST,KeyType key)
2 {
3     ST.R[0].key=key;
4     for(i=ST.length;ST.R[i].key!=key;--i);
5     return i;
6 }

它的时间复杂度为O(n),空间复杂度为O(1)
算法比较简单,对表的结构无任何要求。

 

作业题和实践题中,遇到的主要问题是,一开始没有太理解题目的意思,所以用的是另外一种思维方式导致整的思路混乱,做到一半的时候发现自己做的不对。但是又不知道错在哪里,所以去网上找了一些资料,但是一开始没有注释很艰难,又去问了同学现在思路有了一点,而且我有一个很大的问题就是很容易忘, 思路或者做题时的注意事项或者一些基础代码,以后要多练习,之后对自己的目标就是多练习尽量不要忘记基础,多看一些慕课,加强理解,我知道自己与别人差距很大,所以只能一点一点去弥补,加油吧

 

posted @ 2019-06-02 21:46  更欣  阅读(137)  评论(0编辑  收藏  举报