第七章学习的是查找。 首先,查找方式包括顺序查找、折半查找、分块查找。 顺序查找可以通过设置监视哨来减少查找所需的平均时间,免去查找过程中每一步都要检测整个表是否查找完毕。 折半查找中需要注意的是,折半查找的时间复杂度不一定是log2n,因为需要先对顺序表进行排序,才能满足折半查找的要求。 树表的查 ...
分类:
其他好文 时间:
2019-06-02 23:01:16
阅读次数:
248
第7章学习小结 上图为第七章的思维导图。 在顺序查找中,设置监视哨的顺序查找比较重要。 它的时间复杂度为O(n),空间复杂度为O(1) 算法比较简单,对表的结构无任何要求。 在折半查找中,需要注意的是: (1)二分查找不适合动态查找,因为要移动数据。 (2)另外,比较x与a[mid]时,如果两者相等 ...
分类:
其他好文 时间:
2019-06-02 20:36:31
阅读次数:
115
第七章小结 查找 根据这一章的题目,显而易见,这一张讲的是查找。虽然在之前的学习中,我们已经解除了不少的查找功能,但事实上,查找是一个可复杂可简单的过程。我们之前接触的查找大多数都比较的简单,而在学习完这一章后,我们会发现,事实上查找有很多种办法,也会发现,不同的情况,不同的存储结构都需要不同的查找 ...
分类:
其他好文 时间:
2019-06-02 16:10:31
阅读次数:
121
描述: 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开 始),如果target不存在于数组中,返回-1。 样例 : 输入: [1, 2, 3, 3, 4, 5, 10], 3 输出: 2 样例解释: 3 第一次出现在第2 ...
分类:
其他好文 时间:
2019-05-31 21:19:57
阅读次数:
121
二分查找算法比较熟悉的是折半查找,但是折半查找中计算mid时,有加法和除法。下面介绍仅有加法方式的二分查找算法 核心思想利用斐波那契表达式来实现加法方式的折半查找 技巧点:1)将数组中数的个数(f(n)-1)分成 f(n-1) -1和 f(n-2)2):f(n) - 1 = (f(n-1)-1 )+ ...
分类:
编程语言 时间:
2019-05-30 22:15:01
阅读次数:
238
1、算法介绍 (1)序列必须是有序的 (2)取序列的中间元素与查找值比较,相等返回元素下标 (3)根据序列升序或降序,中间元素小于或大于查找值的具体情况,选择中间元素右边或左边的序列重复步骤(2)(3), 未找到返回-1。 2、代码实现 2.1、golang 2.2、python3 ...
分类:
编程语言 时间:
2019-05-30 10:30:20
阅读次数:
113
实验结论 实验结论 实验内容 1. 设N个整数有序(由小到大)存放在一维数组中。编写函数binarySearch(),实现使用二分查找算法在一维数组中 查找特定整数item。如果找到,返回item在数组元素中的下标;如果item不在数组中,则返回-1。 ①实现方式1:形参是数组,实参是数组名,使用数 ...
分类:
其他好文 时间:
2019-05-27 23:38:35
阅读次数:
235
实验结论: part 1:二分查找补足程序 (1)用数组元素直接访问方式实现 一定要注意到,形参是数组,而实参是数组名。所以调用的时候写的是a,而不是a[]或者a[N]。 (2)用指针变量访问。形参是指针变量,实参是数组名。 形参是指针变量,实参仍为数组名。item是需要寻找的值,*p表示,可是这里 ...
分类:
编程语言 时间:
2019-05-27 23:19:11
阅读次数:
142
Part 1:二分查找 设N个整数有序(由小到大)存放在一维数组中。编写函数binarySearch(),实现使用二分查找算法在一维数组中 查找特定整数item。如果找到,返回item在数组元素中的下标;如果item不在数组中,则返回-1。 实现方式1:形参是数组,实参是数组名,使用数组元素直接访问 ...
分类:
其他好文 时间:
2019-05-27 23:17:41
阅读次数:
136
实验结果 运行截图 运行截图 ex2_2.cpp 运行结果 总结 在字符串数组的比较和赋值应用函数 strcmp 和strcpy 实现而不能直接用运算符,数组和指针之间的转换很容易混淆导致,要多看书熟练掌握。 选择法和二分法思路都不太难懂但如果不参考算法流程图自己写起来还是有些困难,需要多练习改进 ...
分类:
其他好文 时间:
2019-05-27 16:35:17
阅读次数:
101