init
This commit is contained in:
61
Html/books/markdown/binary_search.md
Normal file
61
Html/books/markdown/binary_search.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# 二分查找与二分答案
|
||||
|
||||
## 二分查找
|
||||
|
||||
### 引入
|
||||
|
||||
二分是一个很简单基础,但很重要的知识点,为以后许多高级的数据结构与算法铺垫。
|
||||
|
||||
下面是一个用二分的简单场景:
|
||||
|
||||
假设小明从0到1000之间选择了一个数字但不告诉你,你可以不断猜测这个数,每次猜测小明会告知你的猜测得过大还是过小,问最多几次就一定能猜中?
|
||||
|
||||
答案是利用二分查找的原理,猜测11次即可。
|
||||
|
||||
1. 对于0到1000的答案备选区,猜测中位数500,假设过小,
|
||||
2. 则对于501到1000的答案备选区,猜测750,假设过大
|
||||
3. 则对于501到749的答案备选区,猜测625,假设过小,
|
||||
4. 则对于626到749区间......
|
||||
5. (688-749)
|
||||
6. (718-749)
|
||||
7. (734-749)
|
||||
8. (742-749)
|
||||
9. (746-749)
|
||||
10. (748-749)
|
||||
11. (749-749)
|
||||
|
||||
在最差的情况下,第11次的答案备选区就一定长度为1了,也就是必然是答案。
|
||||
|
||||
因此如果序列是有序的,就可以通过二分查找快速定位所需要的数据。
|
||||
|
||||
#### 思考题(询问Agent以学习计算方法,或验证你的答案)
|
||||
|
||||
对于上面那个题目,如果问题区间是1到4000,最差情况下需要猜测几次?
|
||||
|
||||
### 练习:二分查找
|
||||
|
||||
试试对于下面的题目,用代码实现一下二分查找。
|
||||
|
||||
#### 题目:有序数组寻址
|
||||
|
||||
给出一个长度为n的有序数组(从小到大),有q次询问,对于每次询问,输出指定数在数组中的下标。如果不存在则输出-1。
|
||||
|
||||
##### 输入
|
||||
|
||||
第一行一个整数n。(1<=n<=10^5)
|
||||
|
||||
第二行n个用空格分开的整数ai。(0<=ai<=10^8)
|
||||
|
||||
第三行一个整数q,表示询问的次数。(1<=q<=10^4)
|
||||
|
||||
后q行,每行一个整数b,表示询问的数。(0<=b<=10^8)
|
||||
|
||||
##### 输出
|
||||
|
||||
q行,每行一个整数,对应每次询问的返回结果。
|
||||
|
||||
##### 提示:
|
||||
|
||||
完成代码后,通知Agent进行评测。
|
||||
|
||||
如果你还不完全会这个算法,询问Agent获取提示并进行学习。
|
||||
13
Html/books/markdown/example.md
Normal file
13
Html/books/markdown/example.md
Normal file
@@ -0,0 +1,13 @@
|
||||
## 这是一个Makedown文件
|
||||
|
||||
### 教学目标
|
||||
|
||||
|
||||
### 第一章:什么是计算机
|
||||
|
||||
#### 例1-1:计算机的组成部分是
|
||||
|
||||
### 第二章:什么是算法
|
||||
|
||||
|
||||

|
||||
BIN
Html/books/markdown/image/example/p1.png
Normal file
BIN
Html/books/markdown/image/example/p1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.9 MiB |
Reference in New Issue
Block a user