Skip to content

Commit 2018221

Browse files
authored
feat: basic algorithms and template (doocs#454)
1 parent 636679f commit 2018221

27 files changed

+938
-795
lines changed

README.md

+3-4
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,13 @@
3737
- [冒泡排序](./basic/sorting/BubbleSort/README.md)
3838
- [插入排序](./basic/sorting/InsertionSort/README.md)
3939
- [选择排序](./basic/sorting/SelectionSort/README.md)
40-
- [归并排序](./basic/sorting/MergeSort/README.md)
41-
- [快速排序](./basic/sorting/QuickSort/README.md)
40+
- [归并排序(算法模板)](./basic/sorting/MergeSort/README.md)
41+
- [快速排序(算法模板)](./basic/sorting/QuickSort/README.md)
4242
- [希尔排序](./basic/sorting/ShellSort/README.md)
4343

4444
### 查找算法
4545

46-
- [二分查找](./basic/searching/BinarySearch/README.md)
47-
- [二分查找 II](./basic/searching/BinarySearch-II/README.md)
46+
- [二分查找(算法模板)](./basic/searching/BinarySearch/README.md)
4847

4948
## 高频考题
5049

README_EN.md

+3-4
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,13 @@ Complete solutions to [LeetCode](https://leetcode-cn.com/problemset/all/), [LCOF
3737
- [Bubble Sort](./basic/sorting/BubbleSort/README.md)
3838
- [Insertion Sort](./basic/sorting/InsertionSort/README.md)
3939
- [Selection Sort](./basic/sorting/SelectionSort/README.md)
40-
- [Merge Sort](./basic/sorting/MergeSort/README.md)
41-
- [Quick Sort](./basic/sorting/QuickSort/README.md)
40+
- [Merge Sort(Algorithm Template)](./basic/sorting/MergeSort/README.md)
41+
- [Quick Sort(Algorithm Template)](./basic/sorting/QuickSort/README.md)
4242
- [Shell Sort](./basic/sorting/ShellSort/README.md)
4343

4444
### Searching
4545

46-
- [Binary Search](./basic/searching/BinarySearch/README.md)
47-
- [Binary Search II](./basic/searching/BinarySearch-II/README.md)
46+
- [Binary Search(Algorithm Template)](./basic/searching/BinarySearch/README.md)
4847

4948
## High Frequency Interview Questions
5049

basic/README.md

-1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,3 @@
1111
## 查找算法
1212

1313
- [二分查找](./searching/BinarySearch/README.md)
14-
- [二分查找 II](./searching/BinarySearch-II/README.md)

basic/README_EN.md

-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,3 @@
1212
## Searching
1313

1414
- [Binary Search](./searching/BinarySearch/README.md)
15-
- [Binary Search II](./searching/BinarySearch-II/README.md)

basic/searching/BinarySearch-II/BinarySearch.java

-89
This file was deleted.

basic/searching/BinarySearch-II/README.md

-129
This file was deleted.

basic/searching/BinarySearch/BinarySearch.java

-64
This file was deleted.
+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import java.util.Scanner;
2+
3+
public class Main {
4+
public static void main(String[] args) {
5+
Scanner sc = new Scanner(System.in);
6+
int n = sc.nextInt(), q = sc.nextInt();
7+
int[] nums = new int[n];
8+
for (int i = 0; i < n; ++i) {
9+
nums[i] = sc.nextInt();
10+
}
11+
while (q-- > 0) {
12+
int x = sc.nextInt();
13+
int left = 0, right = n - 1;
14+
while (left < right) {
15+
int mid = (left + right) >> 1;
16+
if (nums[mid] >= x) {
17+
right = mid;
18+
} else {
19+
left = mid + 1;
20+
}
21+
}
22+
if (nums[left] != x) {
23+
System.out.println("-1 -1");
24+
} else {
25+
int t = left;
26+
left = 0;
27+
right = n - 1;
28+
while (left < right) {
29+
int mid = (left + right + 1) >> 1;
30+
if (nums[mid] <= x) {
31+
left = mid;
32+
} else {
33+
right = mid - 1;
34+
}
35+
}
36+
System.out.printf("%d %d\n", t, left);
37+
}
38+
}
39+
}
40+
}

basic/searching/BinarySearch/Main.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
n, q = map(int, input().split())
2+
nums = list(map(int, input().split()))
3+
4+
for _ in range(q):
5+
x = int(input())
6+
left, right = 0, n - 1
7+
while left < right:
8+
mid = (left + right) >> 1
9+
if nums[mid] >= x:
10+
right = mid
11+
else:
12+
left = mid + 1
13+
if nums[left] != x:
14+
print('-1 -1')
15+
else:
16+
t = left
17+
left, right = 0, n - 1
18+
while left < right:
19+
mid = (left + right + 1) >> 1
20+
if nums[mid] <= x:
21+
left = mid
22+
else:
23+
right = mid - 1
24+
print(f'{t} {left}')

0 commit comments

Comments
 (0)