Skip to content

Commit

Permalink
添加算法
Browse files Browse the repository at this point in the history
  • Loading branch information
jiangzhonglian committed Jul 17, 2019
1 parent 4ad5c0a commit cd8f7bc
Show file tree
Hide file tree
Showing 1,098 changed files with 152,702 additions and 0 deletions.
5 changes: 5 additions & 0 deletions docs/Algorithm/DataStructure/C++/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Some algorithm templates for better understanding!

> [八大排序算法 集合](/docs/Algorithm/Sort)
![](/images/SortingAlgorithm/八大排序算法性能.png)
Empty file.
1 change: 1 addition & 0 deletions docs/Algorithm/DataStructure/Java/Compression/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Empty file.
15 changes: 15 additions & 0 deletions docs/Algorithm/DataStructure/Java/Data_Structure/Graph/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Some algorithm templates for better understanding!

## 八大排序算法

![](/images/SortingAlgorithm/八大排序算法性能.png)

| 名称 | 动图 | 代码 |
| --- | --- | --- |
| 冒泡排序 | ![](/images/SortingAlgorithm/冒泡排序.gif) | [BubbleSort.py](/opt/git/LeetCode/docs/Algorithm\ Templates/Sort/BubbleSort.py) |
| 插入排序 | ![](/images/SortingAlgorithm/直接插入排序.gif) | [InsertSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/InsertSort.py) |
| 选择排序 | ![](/images/SortingAlgorithm/简单选择排序.gif) | [SelectionSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/SelectionSort.py) |
| 快速排序 | ![](/images/SortingAlgorithm/快速排序.gif) | [QuickSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/QuickSort.py) |
| 希尔排序 | ![](/images/SortingAlgorithm/希尔排序.png) | [ShellSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/ShellSort.py) |
| 归并排序 | ![](/images/SortingAlgorithm/归并排序.gif) | [MergeSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/MergeSort.py) |
| 基数排序 | ![](/images/SortingAlgorithm/基数排序.gif) | |
15 changes: 15 additions & 0 deletions docs/Algorithm/DataStructure/Java/Data_Structure/HashMap/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Some algorithm templates for better understanding!

## 八大排序算法

![](/images/SortingAlgorithm/八大排序算法性能.png)

| 名称 | 动图 | 代码 |
| --- | --- | --- |
| 冒泡排序 | ![](/images/SortingAlgorithm/冒泡排序.gif) | [BubbleSort.py](/opt/git/LeetCode/docs/Algorithm\ Templates/Sort/BubbleSort.py) |
| 插入排序 | ![](/images/SortingAlgorithm/直接插入排序.gif) | [InsertSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/InsertSort.py) |
| 选择排序 | ![](/images/SortingAlgorithm/简单选择排序.gif) | [SelectionSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/SelectionSort.py) |
| 快速排序 | ![](/images/SortingAlgorithm/快速排序.gif) | [QuickSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/QuickSort.py) |
| 希尔排序 | ![](/images/SortingAlgorithm/希尔排序.png) | [ShellSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/ShellSort.py) |
| 归并排序 | ![](/images/SortingAlgorithm/归并排序.gif) | [MergeSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/MergeSort.py) |
| 基数排序 | ![](/images/SortingAlgorithm/基数排序.gif) | |
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Some algorithm templates for better understanding!

## 八大排序算法

![](/images/SortingAlgorithm/八大排序算法性能.png)

| 名称 | 动图 | 代码 |
| --- | --- | --- |
| 冒泡排序 | ![](/images/SortingAlgorithm/冒泡排序.gif) | [BubbleSort.py](/opt/git/LeetCode/docs/Algorithm\ Templates/Sort/BubbleSort.py) |
| 插入排序 | ![](/images/SortingAlgorithm/直接插入排序.gif) | [InsertSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/InsertSort.py) |
| 选择排序 | ![](/images/SortingAlgorithm/简单选择排序.gif) | [SelectionSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/SelectionSort.py) |
| 快速排序 | ![](/images/SortingAlgorithm/快速排序.gif) | [QuickSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/QuickSort.py) |
| 希尔排序 | ![](/images/SortingAlgorithm/希尔排序.png) | [ShellSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/ShellSort.py) |
| 归并排序 | ![](/images/SortingAlgorithm/归并排序.gif) | [MergeSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/MergeSort.py) |
| 基数排序 | ![](/images/SortingAlgorithm/基数排序.gif) | |
15 changes: 15 additions & 0 deletions docs/Algorithm/DataStructure/Java/Data_Structure/Heqp/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Some algorithm templates for better understanding!

## 八大排序算法

![](/images/SortingAlgorithm/八大排序算法性能.png)

| 名称 | 动图 | 代码 |
| --- | --- | --- |
| 冒泡排序 | ![](/images/SortingAlgorithm/冒泡排序.gif) | [BubbleSort.py](/opt/git/LeetCode/docs/Algorithm\ Templates/Sort/BubbleSort.py) |
| 插入排序 | ![](/images/SortingAlgorithm/直接插入排序.gif) | [InsertSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/InsertSort.py) |
| 选择排序 | ![](/images/SortingAlgorithm/简单选择排序.gif) | [SelectionSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/SelectionSort.py) |
| 快速排序 | ![](/images/SortingAlgorithm/快速排序.gif) | [QuickSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/QuickSort.py) |
| 希尔排序 | ![](/images/SortingAlgorithm/希尔排序.png) | [ShellSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/ShellSort.py) |
| 归并排序 | ![](/images/SortingAlgorithm/归并排序.gif) | [MergeSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/MergeSort.py) |
| 基数排序 | ![](/images/SortingAlgorithm/基数排序.gif) | |
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Some algorithm templates for better understanding!

## 八大排序算法

![](/images/SortingAlgorithm/八大排序算法性能.png)

| 名称 | 动图 | 代码 |
| --- | --- | --- |
| 冒泡排序 | ![](/images/SortingAlgorithm/冒泡排序.gif) | [BubbleSort.py](/opt/git/LeetCode/docs/Algorithm\ Templates/Sort/BubbleSort.py) |
| 插入排序 | ![](/images/SortingAlgorithm/直接插入排序.gif) | [InsertSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/InsertSort.py) |
| 选择排序 | ![](/images/SortingAlgorithm/简单选择排序.gif) | [SelectionSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/SelectionSort.py) |
| 快速排序 | ![](/images/SortingAlgorithm/快速排序.gif) | [QuickSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/QuickSort.py) |
| 希尔排序 | ![](/images/SortingAlgorithm/希尔排序.png) | [ShellSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/ShellSort.py) |
| 归并排序 | ![](/images/SortingAlgorithm/归并排序.gif) | [MergeSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/MergeSort.py) |
| 基数排序 | ![](/images/SortingAlgorithm/基数排序.gif) | |
15 changes: 15 additions & 0 deletions docs/Algorithm/DataStructure/Java/Data_Structure/Matrix/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Some algorithm templates for better understanding!

## 八大排序算法

![](/images/SortingAlgorithm/八大排序算法性能.png)

| 名称 | 动图 | 代码 |
| --- | --- | --- |
| 冒泡排序 | ![](/images/SortingAlgorithm/冒泡排序.gif) | [BubbleSort.py](/opt/git/LeetCode/docs/Algorithm\ Templates/Sort/BubbleSort.py) |
| 插入排序 | ![](/images/SortingAlgorithm/直接插入排序.gif) | [InsertSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/InsertSort.py) |
| 选择排序 | ![](/images/SortingAlgorithm/简单选择排序.gif) | [SelectionSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/SelectionSort.py) |
| 快速排序 | ![](/images/SortingAlgorithm/快速排序.gif) | [QuickSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/QuickSort.py) |
| 希尔排序 | ![](/images/SortingAlgorithm/希尔排序.png) | [ShellSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/ShellSort.py) |
| 归并排序 | ![](/images/SortingAlgorithm/归并排序.gif) | [MergeSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/MergeSort.py) |
| 基数排序 | ![](/images/SortingAlgorithm/基数排序.gif) | |
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
## Queue Implementation

1 change: 1 addition & 0 deletions docs/Algorithm/DataStructure/Java/Data_Structure/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

65 changes: 65 additions & 0 deletions docs/Algorithm/DataStructure/Java/Data_Structure/Stack/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
## Stack Implementation

### Stack using Array

```java
public class Stack {

private int[] nums;
private int size;
private int top; # 栈顶位置

private Stack(int size) {
this.size = size;
this.nums = new int[size];
this.top = -1;
}

private boolean isFull() {
return this.top == this.size - 1;
}

public boolean push(int num) {
if(isFull()) {
System.out.println("the stack is full!");
return false;
} else {
this.top++;
this.nums[this.top] = num;
return true;
}
}

public int peek() {
return this.nums[this.top];
}

public int pop() throws Exception {
if(empty()) {
throw new Exception("the stack is empty!");
} else {
return this.nums[this.top--];
}
}

public boolean empty() {
return this.top == -1;
}

public static void main(String[] args) {
Stack stack = new Stack(20);
for (int i = 0; i < 10; i++) {
stack.push(i);
}
System.out.println("Now the peek num is:" + stack.peek());

while(!stack.empty()) {
try {
System.out.println(stack.pop());
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
```
15 changes: 15 additions & 0 deletions docs/Algorithm/DataStructure/Java/Data_Structure/Tree/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Some algorithm templates for better understanding!

## 八大排序算法

![](/images/SortingAlgorithm/八大排序算法性能.png)

| 名称 | 动图 | 代码 |
| --- | --- | --- |
| 冒泡排序 | ![](/images/SortingAlgorithm/冒泡排序.gif) | [BubbleSort.py](/opt/git/LeetCode/docs/Algorithm\ Templates/Sort/BubbleSort.py) |
| 插入排序 | ![](/images/SortingAlgorithm/直接插入排序.gif) | [InsertSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/InsertSort.py) |
| 选择排序 | ![](/images/SortingAlgorithm/简单选择排序.gif) | [SelectionSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/SelectionSort.py) |
| 快速排序 | ![](/images/SortingAlgorithm/快速排序.gif) | [QuickSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/QuickSort.py) |
| 希尔排序 | ![](/images/SortingAlgorithm/希尔排序.png) | [ShellSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/ShellSort.py) |
| 归并排序 | ![](/images/SortingAlgorithm/归并排序.gif) | [MergeSort.py](/opt/git/LeetCode/docs/src/py2.x/SortingAlgorithm/MergeSort.py) |
| 基数排序 | ![](/images/SortingAlgorithm/基数排序.gif) | |
Empty file.
Empty file.
45 changes: 45 additions & 0 deletions docs/Algorithm/DataStructure/Java/Others/NextNodeInOrderTree.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
``` python
8
/
5
/ \
3 6
/ \ \
1 4 7


class Node {
Node parent, lc, rc;
int val;
}
```

1. 首先判断其自有无右孩子,若有,则取其右子树的最左节点; 若无,则开始2


2. 它是其父亲节点的左孩子,则其父亲节点


2. 它是其父亲节点的右孩子,则从其父亲开始往上追溯到第一个向右的节点,如果没有这个节点或者说没有父亲节点,则无下一个节点,若有则取之


```python
def nextNode(node):
def leftest(node):
while node.lc:
node = node.lc
return node
if node.rc:
return leftest(node.rc)
if not node.parent:
return None
if node == node.parent.lc:
return node.parent
elif node == node.parent.rc:
while node.parent.parent:
if node.parent != node.parent.parent.lc:
node = node.parent
else:
return node.parent.parent
return None
```
86 changes: 86 additions & 0 deletions docs/Algorithm/DataStructure/Java/Others/TopKWords.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
import java.io.*;
import java.util.*;

/* display the most frequent K words in the file and the times it appear
in the file – shown in order (ignore case and periods) */

public class TopKWords {
static class CountWords {
private String fileName;

public CountWords(String fileName) {
this.fileName = fileName;
}

public Map<String, Integer> getDictionary() {
Map<String, Integer> dictionary = new HashMap<>();
FileInputStream fis = null;

try {

fis = new FileInputStream(fileName); // open the file
int in = 0;
String s = ""; // init a empty word
in = fis.read(); // read one character

while (-1 != in) {
if (Character.isLetter((char)in)) {
s += (char)in; //if get a letter, append to s
} else {
// this branch means an entire word has just been read
if (s.length() > 0) {
// see whether word exists or not
if (dictionary.containsKey(s)) {
// if exist, count++
dictionary.put(s, dictionary.get(s) + 1);
} else {
// if not exist, initiate count of this word with 1
dictionary.put(s, 1);
}
}
s = ""; // reInit a empty word
}
in = fis.read();
}
return dictionary;
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// you always have to close the I/O streams
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
public static void main(String[] args) {
// you can replace the filePath with yours, e.g.
// CountWords cw = new CountWords("/Users/lisanaaa/Desktop/words.txt");
CountWords cw = new CountWords("/words.txt");
Map<String, Integer> dictionary = cw.getDictionary(); // get the words dictionary: {word: frequency}

// we change the map to list for convenient sort
List<Map.Entry<String, Integer>> list = new ArrayList<>(dictionary.entrySet());

// sort by lambda valueComparator
list.sort(Comparator.comparing(
m -> m.getValue())
);

Scanner input = new Scanner(System.in);
int k = input.nextInt();
while (k > list.size()) {
System.out.println("Retype a number, your number is too large");
input = new Scanner(System.in);
k = input.nextInt();
}
for (int i = 0; i < k; i++) {
System.out.println(list.get(list.size() - i - 1));
}
}
}


11 changes: 11 additions & 0 deletions docs/Algorithm/DataStructure/Java/Others/words.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam non pharetra purus. Quisque non tristique risus. Nulla ultricies eget nunc a volutpat. Aliquam semper, eros sit amet semper pellentesque, elit magna auctor ligula, sit amet vulputate nunc arcu sit amet ipsum. Aenean efficitur, felis ut tincidunt semper, sem sapien facilisis felis, et elementum ipsum risus sit amet metus. Pellentesque et orci at odio hendrerit lobortis vitae non felis. Phasellus nunc eros, ultricies sed dolor vel, ultricies mattis neque. Mauris placerat fringilla libero id efficitur. Donec nec imperdiet augue. Sed sit amet risus in turpis scelerisque rutrum. Ut sed pretium dolor. Donec metus nisl, blandit quis augue et, interdum suscipit metus. Morbi rutrum eros vel lacus aliquet, et maximus erat dapibus. Vivamus est justo, sagittis a augue id, vulputate vehicula nunc. Praesent mattis eros sapien, ac sagittis urna accumsan sit amet. Proin non dui tincidunt, tristique nisi in, vestibulum lorem.

Quisque fermentum justo lacus, sit amet tempus lectus congue eu. Nulla sed quam nec nulla consequat tincidunt. Sed sed nunc diam. Integer ex ante, accumsan id fermentum a, interdum eu sapien. Aliquam justo dui, luctus vel ligula in, lacinia ornare turpis. Praesent leo purus, fringilla ut lobortis et, porta ac urna. Mauris id velit porta, iaculis felis non, sagittis nunc. Quisque non condimentum nisl, vitae venenatis urna. Nam commodo euismod felis, ac efficitur turpis scelerisque nec. Phasellus sagittis nec lacus eu bibendum. Suspendisse finibus vestibulum quam, quis volutpat ante. Duis nibh ligula, dapibus at est sed, tincidunt convallis augue. Pellentesque non consequat mi. Curabitur consequat imperdiet efficitur.

Mauris ipsum arcu, fermentum in urna ultricies, venenatis vehicula nisl. Donec viverra non tellus sit amet porta. Phasellus ornare magna eget condimentum mollis. In hac habitasse platea dictumst. Proin in nibh venenatis, fermentum neque nec, commodo urna. In eget condimentum risus, ac interdum dolor. Sed ut neque sapien. Proin nulla diam, lobortis sed ultrices eget, blandit ut libero.

Fusce at varius dui. Quisque viverra vulputate consectetur. Quisque sagittis id ante a vestibulum. Phasellus vel lobortis lectus. Duis vestibulum, quam vel congue elementum, lacus nibh efficitur odio, consectetur dapibus ipsum velit at diam. Duis eu nunc id diam tempor vestibulum sed luctus arcu. Nunc eu luctus ex. Morbi et commodo eros, non suscipit enim. Ut fringilla odio nec tincidunt scelerisque. Nam quis elit cursus, ullamcorper lorem id, convallis dui. Mauris elementum tortor odio, nec imperdiet nisl bibendum eget. Suspendisse potenti.

Cras ut efficitur enim. Sed consequat non ante id euismod. Ut at magna viverra, aliquam purus a, lobortis mi. Donec hendrerit odio eu nunc imperdiet, quis pharetra sapien volutpat. Morbi leo libero, egestas vitae tortor eget, dictum volutpat augue. Donec arcu lacus, tristique eu posuere ac, pharetra vel ante. Nunc efficitur arcu elit, quis semper risus vestibulum eu.
2 changes: 2 additions & 0 deletions docs/Algorithm/DataStructure/Java/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Some algorithm templates for better understanding!

Empty file.
13 changes: 13 additions & 0 deletions docs/Algorithm/DataStructure/Java/Sort/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# 八大排序算法

![](/images/SortingAlgorithm/八大排序算法性能.png)

| 名称 | 动图 | 代码 |
| --- | --- | --- |
| 冒泡排序 | ![](/images/SortingAlgorithm/冒泡排序.gif) | [BubbleSort.py](/src/py3.x/sort/BubbleSort.py) |
| 插入排序 | ![](/images/SortingAlgorithm/直接插入排序.gif) | [InsertSort.py](/src/py3.x/sort/InsertSort.py) |
| 选择排序 | ![](/images/SortingAlgorithm/简单选择排序.gif) | [SelectionSort.py](/src/py3.x/sort/SelectionSort.py) |
| 快速排序 | ![](/images/SortingAlgorithm/快速排序.gif) | [QuickSort.py](/src/py3.x/sort/QuickSort.py) |
| 希尔排序 | ![](/images/SortingAlgorithm/希尔排序.png) | [ShellSort.py](/src/py3.x/sort/ShellSort.py) |
| 归并排序 | ![](/images/SortingAlgorithm/归并排序.gif) | [MergeSort.py](/src/py3.x/sort/MergeSort.py) |
| 基数排序 | ![](/images/SortingAlgorithm/基数排序.gif) | [RadixSort.py](/src/py3.x/sort/RadixSort.py) |
Loading

0 comments on commit cd8f7bc

Please sign in to comment.