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)
fmt.Println(list)
for low <= high {
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
/**
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 j := i; j > 0 && s[j] < s[j-1]; j-- {
// 选择第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。
* **代码**
```java
```
```go
/**
Insert 实现插入排序 O(n * n)
a : 被排序数组
返回:排序完毕数组
*/
func Insert(s []int) []int {
func Insert(s []int) {
n := len(s)
if n < 2 {
return s
return
}
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张小,则循环交换较大的值
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
/**
Quick 实现快速排序 O(n * log(n))

4
golang_learn/data_paixu/16堆排序.md

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

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

@ -20,10 +20,6 @@
* 所谓归并是指将若干个已排好序的部分合并成一个有序的部分。
* **代码**
```java
```
```go
/**
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 j := i; j > 0 && s[j] < s[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
...
for d := len(a); d >= 1; d = d/2 {
func main(){
for d := len(a); d >= 1; d = d/2 {
Shell(a, d)
}
...
}
/**
@ -42,13 +37,9 @@ func Shell(s []int, get int) {
for i := get; i < n; i++ {
for j := i; j > 0 && s[j] < s[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
/**

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

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