Browse Source

优化算法处理

master
viviman 3 years ago
parent
commit
b254a4a8e0
  1. 1
      golang_learn/data_paixu/08二分查找.go
  2. 22
      golang_learn/data_paixu/12选择排序.md
  3. 6
      golang_learn/data_paixu/13插入排序.go
  4. 17
      golang_learn/data_paixu/13插入排序.md
  5. 4
      golang_learn/data_paixu/14快速排序.md
  6. 4
      golang_learn/data_paixu/16堆排序.md
  7. 4
      golang_learn/data_paixu/17归并排序.md
  8. 6
      golang_learn/data_paixu/18希尔排序.go
  9. 17
      golang_learn/data_paixu/18希尔排序.md
  10. 4
      golang_learn/data_paixu/19计数排序.md
  11. 5
      golang_learn/data_paixu/21排序方式对比.md

1
golang_learn/data_paixu/08二分查找.go

@ -19,7 +19,6 @@ func BinaryQuery(list []int, target int) int {
// 前提必须进行排序 // 前提必须进行排序
sort.Ints(list) sort.Ints(list)
fmt.Println(list)
for low <= high { for low <= high {
mid := (low + high) / 2 mid := (low + high) / 2

22
golang_learn/data_paixu/12选择排序.md

@ -16,28 +16,6 @@
* **代码** * **代码**
```java
public static void selectSort(int[] a) {
if (a == null || a.length <= 0) {
return;
}
for (int i = 0; i < a.length; i++) {
int temp = a[i];
int flag = i; // 将当前下标定义为最小值下标
for (int j = i + 1; j < a.length; j++) {
if (a[j] < temp) {// a[j] < temp 从小到大排序a[j] > temp 从大到小排序
temp = a[j];
flag = j; // 如果有小于当前最小值的关键字将此关键字的下标赋值给flag
}
}
if (flag != i) {
a[flag] = a[i];
a[i] = temp;
}
}
}
```
```go ```go
/** /**
Select 实现选择排序 O(n * n) Select 实现选择排序 O(n * n)

6
golang_learn/data_paixu/13插入排序.go

@ -23,11 +23,7 @@ func Insert(s []int) {
for i := 1; i < n; i++ { for i := 1; i < n; i++ {
for j := i; j > 0 && s[j] < s[j-1]; j-- { for j := i; j > 0 && s[j] < s[j-1]; j-- {
// 选择第j张比较第j - 1张小,则循环交换较大的值 // 选择第j张比较第j - 1张小,则循环交换较大的值
swap2(s, j, j-1) s[j], s[j-1] = s[j-1], s[j]
} }
} }
} }
func swap2(slice []int, i int, j int) {
slice[i], slice[j] = slice[j], slice[i]
}

17
golang_learn/data_paixu/13插入排序.md

@ -13,32 +13,23 @@
* 重复步骤2~5。 * 重复步骤2~5。
* **代码** * **代码**
```java
```
```go ```go
/** /**
Insert 实现插入排序 O(n * n) Insert 实现插入排序 O(n * n)
a : 被排序数组 a : 被排序数组
返回:排序完毕数组 返回:排序完毕数组
*/ */
func Insert(s []int) []int { func Insert(s []int) {
n := len(s) n := len(s)
if n < 2 { if n < 2 {
return s return
} }
for i := 1; i < n; i++ { for i := 1; i < n; i++ {
for j := i; j > 0 && s[j] < s[j - 1]; j-- { for j := i; j > 0 && s[j] < s[j-1]; j-- {
// 选择第j张比较第j - 1张小,则循环交换较大的值 // 选择第j张比较第j - 1张小,则循环交换较大的值
swap(s, j, j - 1) s[j], s[j-1] = s[j-1], s[j]
} }
} }
return s
}
func swap(slice []int, i int, j int) {
slice[i], slice[j] = slice[j], slice[i]
} }
``` ```

4
golang_learn/data_paixu/14快速排序.md

@ -19,10 +19,6 @@
* **代码** * **代码**
```java
```
```go ```go
/** /**
Quick 实现快速排序 O(n * log(n)) Quick 实现快速排序 O(n * log(n))

4
golang_learn/data_paixu/16堆排序.md

@ -36,10 +36,6 @@
* **代码** * **代码**
```java
```
```go ```go
/** /**

4
golang_learn/data_paixu/17归并排序.md

@ -20,10 +20,6 @@
* 所谓归并是指将若干个已排好序的部分合并成一个有序的部分。 * 所谓归并是指将若干个已排好序的部分合并成一个有序的部分。
* **代码** * **代码**
```java
```
```go ```go
/** /**
MergeSort 实现归并排序(前提列表有序) MergeSort 实现归并排序(前提列表有序)

6
golang_learn/data_paixu/18希尔排序.go

@ -28,11 +28,7 @@ func Shell(s []int, get int) {
for i := get; i < n; i++ { for i := get; i < n; i++ {
for j := i; j > 0 && s[j] < s[j-get]; j = j - get { for j := i; j > 0 && s[j] < s[j-get]; j = j - get {
// 选择第j张比较第j - get张小,则循环交换较大的值 // 选择第j张比较第j - get张小,则循环交换较大的值
swap1(s, j, j-get) s[j], s[j-get] = s[j-get], s[j]
} }
} }
} }
func swap1(slice []int, i int, j int) {
slice[i], slice[j] = slice[j], slice[i]
}

17
golang_learn/data_paixu/18希尔排序.md

@ -16,17 +16,12 @@
* **代码** * **代码**
```java
```
```go ```go
... func main(){
for d := len(a); d >= 1; d = d/2 { for d := len(a); d >= 1; d = d/2 {
Shell(a, d) Shell(a, d)
} }
... }
/** /**
@ -42,13 +37,9 @@ func Shell(s []int, get int) {
for i := get; i < n; i++ { for i := get; i < n; i++ {
for j := i; j > 0 && s[j] < s[j - get]; j = j - get { for j := i; j > 0 && s[j] < s[j - get]; j = j - get {
// 选择第j张比较第j - get张小,则循环交换较大的值 // 选择第j张比较第j - get张小,则循环交换较大的值
swap(s, j, j - get) s[j], s[j - get] = s[j - get], s[j]
} }
} }
} }
func swap(slice []int, i int, j int) {
slice[i], slice[j] = slice[j], slice[i]
}
``` ```

4
golang_learn/data_paixu/19计数排序.md

@ -16,10 +16,6 @@
* **代码** * **代码**
```java
```
```go ```go
/** /**

5
golang_learn/data_paixu/21排序方式对比.md

@ -27,12 +27,15 @@
* 直接插入排序 * 直接插入排序
* 扫描位置(指插入的位置) * 扫描位置(指插入的位置)
* 希尔排序 * 希尔排序
* * (优化)插入排序(缩小增量排序)
* 简单选择排序 * 简单选择排序
* 扫描一遍(获取最小数) * 扫描一遍(获取最小数)
* 对调位置 * 对调位置
* 堆排序 * 堆排序
* 建堆
* 交换值并向下调整
* 归并排序 * 归并排序
* 将两个数组排有序 * 将两个数组排有序
* 将两个数组归并到一起 * 将两个数组归并到一起
* 基数排序 * 基数排序
* 百数之内的排序
Loading…
Cancel
Save