mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-13 07:46:06 +00:00
Sort the coding languages by applications. (#721)
This commit is contained in:
@@ -40,12 +40,12 @@
|
||||
|
||||
在实现代码中,我们声明一个递归函数 `dfs()` 来求解问题 $f(i, j)$ 。
|
||||
|
||||
=== "Java"
|
||||
=== "Python"
|
||||
|
||||
```java title="binary_search_recur.java"
|
||||
[class]{binary_search_recur}-[func]{dfs}
|
||||
```python title="binary_search_recur.py"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{binary_search_recur}-[func]{binarySearch}
|
||||
[class]{}-[func]{binary_search}
|
||||
```
|
||||
|
||||
=== "C++"
|
||||
@@ -56,12 +56,20 @@
|
||||
[class]{}-[func]{binarySearch}
|
||||
```
|
||||
|
||||
=== "Python"
|
||||
=== "Java"
|
||||
|
||||
```python title="binary_search_recur.py"
|
||||
[class]{}-[func]{dfs}
|
||||
```java title="binary_search_recur.java"
|
||||
[class]{binary_search_recur}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{binary_search}
|
||||
[class]{binary_search_recur}-[func]{binarySearch}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="binary_search_recur.cs"
|
||||
[class]{binary_search_recur}-[func]{dfs}
|
||||
|
||||
[class]{binary_search_recur}-[func]{binarySearch}
|
||||
```
|
||||
|
||||
=== "Go"
|
||||
@@ -72,6 +80,14 @@
|
||||
[class]{}-[func]{binarySearch}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="binary_search_recur.swift"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{binarySearch}
|
||||
```
|
||||
|
||||
=== "JS"
|
||||
|
||||
```javascript title="binary_search_recur.js"
|
||||
@@ -88,38 +104,6 @@
|
||||
[class]{}-[func]{binarySearch}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="binary_search_recur.c"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{binarySearch}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="binary_search_recur.cs"
|
||||
[class]{binary_search_recur}-[func]{dfs}
|
||||
|
||||
[class]{binary_search_recur}-[func]{binarySearch}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="binary_search_recur.swift"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{binarySearch}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="binary_search_recur.zig"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{binarySearch}
|
||||
```
|
||||
|
||||
=== "Dart"
|
||||
|
||||
```dart title="binary_search_recur.dart"
|
||||
@@ -135,3 +119,19 @@
|
||||
|
||||
[class]{}-[func]{binary_search}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="binary_search_recur.c"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{binarySearch}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="binary_search_recur.zig"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{binarySearch}
|
||||
```
|
||||
|
||||
@@ -57,12 +57,12 @@
|
||||
|
||||
为了提升查询 $m$ 的效率,我们借助一个哈希表 `hmap` 来存储数组 `inorder` 中元素到索引的映射。
|
||||
|
||||
=== "Java"
|
||||
=== "Python"
|
||||
|
||||
```java title="build_tree.java"
|
||||
[class]{build_tree}-[func]{dfs}
|
||||
```python title="build_tree.py"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{build_tree}-[func]{buildTree}
|
||||
[class]{}-[func]{build_tree}
|
||||
```
|
||||
|
||||
=== "C++"
|
||||
@@ -73,12 +73,20 @@
|
||||
[class]{}-[func]{buildTree}
|
||||
```
|
||||
|
||||
=== "Python"
|
||||
=== "Java"
|
||||
|
||||
```python title="build_tree.py"
|
||||
[class]{}-[func]{dfs}
|
||||
```java title="build_tree.java"
|
||||
[class]{build_tree}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{build_tree}
|
||||
[class]{build_tree}-[func]{buildTree}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="build_tree.cs"
|
||||
[class]{build_tree}-[func]{dfs}
|
||||
|
||||
[class]{build_tree}-[func]{buildTree}
|
||||
```
|
||||
|
||||
=== "Go"
|
||||
@@ -89,6 +97,14 @@
|
||||
[class]{}-[func]{buildTree}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="build_tree.swift"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{buildTree}
|
||||
```
|
||||
|
||||
=== "JS"
|
||||
|
||||
```javascript title="build_tree.js"
|
||||
@@ -105,38 +121,6 @@
|
||||
[class]{}-[func]{buildTree}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="build_tree.c"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{buildTree}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="build_tree.cs"
|
||||
[class]{build_tree}-[func]{dfs}
|
||||
|
||||
[class]{build_tree}-[func]{buildTree}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="build_tree.swift"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{buildTree}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="build_tree.zig"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{buildTree}
|
||||
```
|
||||
|
||||
=== "Dart"
|
||||
|
||||
```dart title="build_tree.dart"
|
||||
@@ -153,6 +137,22 @@
|
||||
[class]{}-[func]{build_tree}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="build_tree.c"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{buildTree}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="build_tree.zig"
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{buildTree}
|
||||
```
|
||||
|
||||
下图展示了构建二叉树的递归过程,各个节点是在向下“递”的过程中建立的,而各条边(即引用)是在向上“归”的过程中建立的。
|
||||
|
||||
=== "<1>"
|
||||
|
||||
@@ -82,14 +82,14 @@
|
||||
|
||||
在代码中,我们声明一个递归函数 `dfs(i, src, buf, tar)` ,它的作用是将柱 `src` 顶部的 $i$ 个圆盘借助缓冲柱 `buf` 移动至目标柱 `tar` 。
|
||||
|
||||
=== "Java"
|
||||
=== "Python"
|
||||
|
||||
```java title="hanota.java"
|
||||
[class]{hanota}-[func]{move}
|
||||
```python title="hanota.py"
|
||||
[class]{}-[func]{move}
|
||||
|
||||
[class]{hanota}-[func]{dfs}
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{hanota}-[func]{solveHanota}
|
||||
[class]{}-[func]{solve_hanota}
|
||||
```
|
||||
|
||||
=== "C++"
|
||||
@@ -102,14 +102,24 @@
|
||||
[class]{}-[func]{solveHanota}
|
||||
```
|
||||
|
||||
=== "Python"
|
||||
=== "Java"
|
||||
|
||||
```python title="hanota.py"
|
||||
[class]{}-[func]{move}
|
||||
```java title="hanota.java"
|
||||
[class]{hanota}-[func]{move}
|
||||
|
||||
[class]{}-[func]{dfs}
|
||||
[class]{hanota}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{solve_hanota}
|
||||
[class]{hanota}-[func]{solveHanota}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="hanota.cs"
|
||||
[class]{hanota}-[func]{move}
|
||||
|
||||
[class]{hanota}-[func]{dfs}
|
||||
|
||||
[class]{hanota}-[func]{solveHanota}
|
||||
```
|
||||
|
||||
=== "Go"
|
||||
@@ -122,6 +132,16 @@
|
||||
[class]{}-[func]{solveHanota}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="hanota.swift"
|
||||
[class]{}-[func]{move}
|
||||
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{solveHanota}
|
||||
```
|
||||
|
||||
=== "JS"
|
||||
|
||||
```javascript title="hanota.js"
|
||||
@@ -142,46 +162,6 @@
|
||||
[class]{}-[func]{solveHanota}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="hanota.c"
|
||||
[class]{}-[func]{move}
|
||||
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{solveHanota}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="hanota.cs"
|
||||
[class]{hanota}-[func]{move}
|
||||
|
||||
[class]{hanota}-[func]{dfs}
|
||||
|
||||
[class]{hanota}-[func]{solveHanota}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="hanota.swift"
|
||||
[class]{}-[func]{move}
|
||||
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{solveHanota}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="hanota.zig"
|
||||
[class]{}-[func]{move}
|
||||
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{solveHanota}
|
||||
```
|
||||
|
||||
=== "Dart"
|
||||
|
||||
```dart title="hanota.dart"
|
||||
@@ -202,6 +182,26 @@
|
||||
[class]{}-[func]{solve_hanota}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="hanota.c"
|
||||
[class]{}-[func]{move}
|
||||
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{solveHanota}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="hanota.zig"
|
||||
[class]{}-[func]{move}
|
||||
|
||||
[class]{}-[func]{dfs}
|
||||
|
||||
[class]{}-[func]{solveHanota}
|
||||
```
|
||||
|
||||
如下图所示,汉诺塔问题形成一个高度为 $n$ 的递归树,每个节点代表一个子问题、对应一个开启的 `dfs()` 函数,**因此时间复杂度为 $O(2^n)$ ,空间复杂度为 $O(n)$** 。
|
||||
|
||||

|
||||
|
||||
Reference in New Issue
Block a user