Skip to content

Commit 636d6d1

Browse files
author
limitsy
committed
二分查找
1 parent 07f6b46 commit 636d6d1

File tree

1 file changed

+38
-2
lines changed

1 file changed

+38
-2
lines changed

notes/数据结构与算法.md

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,45 @@ https://github.com/CarpenterLee/JCFInternals/blob/049c84bb65a3114ba4b8355d83c490
132132

133133
#### 二分查找法
134134

135-
#### 二叉树遍历
135+
在有序表中,通过不断的二分判断mid与目标是否一致,并缩小目标所在区间。
136136

137-
### 4.. 二分搜索树
137+
**代码实现**
138+
139+
```java
140+
// 非递归实现
141+
private static int search(int[] data, int l, int r, int target) {
142+
int mid;
143+
while(l < r) {
144+
mid = (l + r) / 2;
145+
if(data[mid] == target) {
146+
return mid;
147+
} else if(data[mid] < target) {
148+
l = mid + 1;
149+
} else {
150+
r = mid;
151+
}
152+
}
153+
return -1;
154+
}
155+
// 递归实现
156+
private static int searchDfs(int[] data, int l, int r, int target) {
157+
if(l >= r) {
158+
return -1;
159+
}
160+
int mid = (l + r) / 2;
161+
if(target == data[mid]) {
162+
return mid;
163+
} else if(target > data[mid]) {
164+
return searchDfs(data, mid + 1, r, target);
165+
} else {
166+
return searchDfs(data, l, mid, target);
167+
}
168+
}
169+
```
170+
171+
#####
172+
173+
### 4.. 二叉树遍历
138174

139175
#### 深度优先遍历(前序、中序、后序遍历)
140176

0 commit comments

Comments
 (0)