第七章学习的是查找。 首先,查找方式包括顺序查找、折半查找、分块查找。 顺序查找可以通过设置监视哨来减少查找所需的平均时间,免去查找过程中每一步都要检测整个表是否查找完毕。 折半查找中需要注意的是,折半查找的时间复杂度不一定是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
二分查找算法比较熟悉的是折半查找,但是折半查找中计算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
试着用Java写了求最大值,平均值,折半查找和冒泡排序的方法
分类:
编程语言 时间:
2019-05-23 22:56:02
阅读次数:
117
二叉搜索树的概念 从前面讨论折半搜索的性能中可知,如果每次从搜索序列的中间进行搜索,把区间缩小一半,通过有限次迭代,很快就能通近到所要寻找的元素。进一步,如果我们直接输入搜索序列,构造出类似于折半搜索的判定树那样的树形结构,就能实现快速搜索。这种树形结构就是二又搜索树。 二又搜索树(binary s ...
分类:
编程语言 时间:
2019-05-20 19:13:35
阅读次数:
127
1. 从 4 个数列中选择的话总共有 n4 种情况,所以全都判断一遍不可行。不过将它们对半分成 AB 和 CD 再考虑,就可以快速解决了。从两个数列中选择的话只有 n2 种组合,所以可以进行枚举。先从 A、B中取出 a、b 后,为了使总和为 0 则需要从 C、D中取出 c+d ...
分类:
其他好文 时间:
2019-05-13 22:43:28
阅读次数:
65
传送门:https://vjudge.net/problem/POJ-3977 题意:给你n数(n<=35),从中选出一个非空子集,使得这个子集的所有元素的值的和的绝对值最小,如果有多组数据满足的话,选择子集元素最少的那个。 这题是从挑战程序设计竞赛来的。就是折半枚举。也就是我先分别枚举前面一半的选 ...
分类:
其他好文 时间:
2019-05-11 23:10:41
阅读次数:
134
题目链接: "luogu2962" 这个题还可以折半搜索(似乎复杂度更有保证),不过作为练手更适合写异或方程组的高斯消元 异或方程组的高斯消元一般是如下形式 $$ (a_{i,1} x_1)\text^(a_{i,2} x_2)\text^\cdots\text^(a_{i,n} x_n)=y_n ...
分类:
其他好文 时间:
2019-05-04 10:01:23
阅读次数:
122
You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality c ...
分类:
其他好文 时间:
2019-04-30 22:04:03
阅读次数:
147
二分查找 定义 二分查找(Binary Search)又称折半查找,它是一种效率较高的查找方法。 要求 (1)必须采用顺序存储结构 (2)必须按关键字大小有序排列 查找思路 首先将给定值K,与表中中间位置元素的关键字比较,若相等,返回该元素的存储位置;若不等,这所需查找的元素只能在中间数据以外的前半 ...
分类:
编程语言 时间:
2019-04-20 12:47:20
阅读次数:
220