第七章学习小结

本周学习了有关查找的内容:

查找结构
(1)线性表:用于静态查找,有顺序查找和二分查找方法
(2)树表:用于动态查找,有二叉排序树方法
(3)散列表:两种查找都适用

查找算法分类:

  1)静态查找和动态查找;

    注:静态或者动态都是针对查找表而言的。动态表指查找表中有删除和插入操作的表。

  2)无序查找和有序查找。

    无序查找:被查找数列有序无序均可;

    有序查找:被查找数列必须为有序数列。

  平均查找长度(ASL):是查找算法的查找成功时的平均查找长度的缩写,是为确定记录在查找表中的位置,需和给定值进行比较的关键字个数的期望值。

1.顺序查找

顺序查找适合于存储结构为顺序存储或链接存储的线性表,顺序查找的时间复杂度为O(n)。

int SequenceSearch(int a[], int value, int n)
{
    int i;
    for(i=0; i<n; i++)
        if(a[i]==value)
            return i;
    return -1;
}

2.二分查找

二分查找的元素必须是有序的,如果是无序的则要先进行排序操作。其查找的时间复杂度为O(log2n)。

int BinarySearch1(int a[], int value, int n)
{
    int low, high, mid;
    low = 0;
    high = n-1;
    while(low<=high)
    {
        mid = (low+high)/2;
        if(a[mid]==value)
            return mid;
        if(a[mid]>value)
            high = mid-1;
        if(a[mid]<value)
            low = mid+1;
    }
    return -1;
}

3.树表查找

二叉查找树是先对待查找的数据进行生成树,确保树的左分支的值小于右分支的值,然后在就行和每个节点的父节点比较大小,查找最适合的范围。 这个算法的查找效率很高,但是如果使用这种查找方法要首先创建树,可构建平衡二叉树,B树与B+树。

哈希表

       1)用给定的哈希函数构造哈希表;

  2)根据选择的冲突处理方法解决地址冲突,常见的解决冲突的方法:开放定址法、线性探测法、二次探测法等。

  3)在哈希表的基础上执行哈希查找。

时间复杂度:对于无冲突的Hash表而言,查找复杂度为O(1)

总结:在本章学习中,对于树表的掌握其实很不理想,现在距离期末已经没有多少时间了,在接下来的时间里我要不断巩固查找中树表的知识,并且对以往学习的知识进行复习,争取考到个好成绩。

posted @ 2020-06-28 20:47  软工1902龚俊杰  阅读(116)  评论(0编辑  收藏  举报