forked from go/golangs_learn
35 changed files with 639 additions and 1258 deletions
@ -1,46 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
// 冒泡排序
|
|
||||
func main() { |
|
||||
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
|
||||
Bubble(a) |
|
||||
|
|
||||
for _, i2 := range a { |
|
||||
print(i2, "\t") // 输出每一个值
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Bubble 实现冒泡排序 O(n * n) |
|
||||
a : 被排序数组 |
|
||||
返回:排序完毕数组 |
|
||||
*/ |
|
||||
func Bubble(a []int) { |
|
||||
for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素
|
|
||||
for ii := i + 1; ii < j; ii++ { // 循环无序列表部分
|
|
||||
if a[i] > a[ii] { // 从一个元素与一个无序值比较
|
|
||||
a[ii], a[i] = a[i], a[ii] // 较大的值移至后边
|
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Bubble2 【优化】实现冒泡排序 O(n * n) |
|
||||
a : 被排序数组 |
|
||||
返回:排序完毕数组 |
|
||||
*/ |
|
||||
func Bubble2(a []int) { |
|
||||
for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素
|
|
||||
b := true // 定义变量优化
|
|
||||
for ii := i + 1; ii < j; ii++ { // 循环无序列表部分
|
|
||||
if a[i] > a[ii] { // 从一个元素与一个无序值比较
|
|
||||
a[ii], a[i] = a[i], a[ii] // 较大的值移至后边
|
|
||||
b = false // 发生交换
|
|
||||
} |
|
||||
} |
|
||||
if b { // 为存在交换,结束循环
|
|
||||
break |
|
||||
} |
|
||||
} |
|
||||
} |
|
@ -1,32 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
// 桶排序 - 失败
|
|
||||
func main() { |
|
||||
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
|
||||
Bucket(a, len(a), 50) |
|
||||
|
|
||||
for _, i2 := range a { |
|
||||
print(i2, "\t") // 输出每一个值
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Bucket 实现桶排序 |
|
||||
*/ |
|
||||
func Bucket(li []int, n, max int) { |
|
||||
// 创建桶
|
|
||||
a, b := make([][]int, n), max/n // a 桶 b 单桶的大小
|
|
||||
for i := range a { |
|
||||
a[i] = make([]int, 0) |
|
||||
} |
|
||||
for i := 0; i < n; i++ { |
|
||||
n := li[i] / b |
|
||||
a[n] = append(a[n], li[i]) |
|
||||
} |
|
||||
|
|
||||
for i, j := 0, n; i <= n; i = i + 1 { // 因为存在递归,将数值填回数组
|
|
||||
for ii, jj := 0, len(a[i]); ii < jj; ii, j = ii+1, j+1 { |
|
||||
li[j] = a[i][ii] |
|
||||
} |
|
||||
} |
|
||||
} |
|
@ -1,28 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
// 计数排序
|
|
||||
func main() { |
|
||||
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
|
||||
Count(a, 50) |
|
||||
|
|
||||
for _, i2 := range a { |
|
||||
print(i2, "\t") // 输出每一个值
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Count 实现计数排序 |
|
||||
限制:仅限百内之整数 |
|
||||
*/ |
|
||||
func Count(li []int, max int) { |
|
||||
a := make([]int, max) |
|
||||
for i := 0; i < len(li); i++ { |
|
||||
a[li[i]] += 1 |
|
||||
} |
|
||||
|
|
||||
for i, j := 0, 0; i < max; i++ { |
|
||||
for ii := a[i]; ii > 0; ii, j = ii-1, j+1 { |
|
||||
li[j] = i |
|
||||
} |
|
||||
} |
|
||||
} |
|
@ -1,57 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
// 堆排序
|
|
||||
func main() { |
|
||||
|
|
||||
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
|
||||
Heap(a) |
|
||||
|
|
||||
for _, i2 := range a { |
|
||||
print(i2, "\t") // 输出每一个值
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Heap 进行排序 |
|
||||
1. 建堆 |
|
||||
2. 交换值并向下调整 |
|
||||
*/ |
|
||||
func Heap(li []int) { |
|
||||
n := len(li) |
|
||||
for i := (n - 2) / 2; i >= 0; i-- { // 创建堆
|
|
||||
sift(li, i, n-1) |
|
||||
} |
|
||||
|
|
||||
for i := n - 1; i >= 0; i-- { // 先做交换(减少内存)后做向下调整
|
|
||||
li[0], li[i] = li[i], li[0] |
|
||||
sift(li, 0, i-1) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
sift 向下调整 |
|
||||
li 数组列表 |
|
||||
low 堆的根节点的下标 |
|
||||
high 堆的最后一个元素的下标 |
|
||||
*/ |
|
||||
func sift(li []int, low, high int) { |
|
||||
/** |
|
||||
i 指一层中的根 |
|
||||
j 开始是左孩子 |
|
||||
t 指一层中某个需要调整的值 |
|
||||
*/ |
|
||||
i, j, t := low, 2*low+1, li[low] |
|
||||
for j <= high { // 在范围内进行循环,防止越界
|
|
||||
if j+1 <= high && li[j+1] > li[j] { // 比较一个根下的两个孩子大小,取大值的位置
|
|
||||
j = j + 1 |
|
||||
} |
|
||||
if li[j] > t { // 与指定根值比较,若值比根大,继续循环
|
|
||||
li[i], i, j = li[j], j, 2*i+1 |
|
||||
} else { |
|
||||
// li[i] = t // 将临时值放回,移至循环结束位置
|
|
||||
break |
|
||||
} |
|
||||
} |
|
||||
li[i] = t // 将临时值放回
|
|
||||
|
|
||||
} |
|
@ -1,33 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
// 插入排序
|
|
||||
func main() { |
|
||||
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
|
||||
Insert(a) |
|
||||
|
|
||||
for _, i2 := range a { |
|
||||
print(i2, "\t") // 输出每一个值
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Insert 实现插入排序 O(n * n) |
|
||||
a : 被排序数组 |
|
||||
返回:排序完毕数组 |
|
||||
*/ |
|
||||
func Insert(s []int) { |
|
||||
n := len(s) |
|
||||
if n < 2 { |
|
||||
return |
|
||||
} |
|
||||
for i := 1; i < n; i++ { |
|
||||
for j := i; j > 0 && s[j] < s[j-1]; j-- { |
|
||||
// 选择第j张比较第j - 1张小,则循环交换较大的值
|
|
||||
swap(s, j, j-1) |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func swap(slice []int, i int, j int) { |
|
||||
slice[i], slice[j] = slice[j], slice[i] |
|
||||
} |
|
@ -1,49 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
// 归并排序
|
|
||||
func main() { |
|
||||
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
|
||||
MergeSort(a, 0, len(a)-1) |
|
||||
|
|
||||
for _, i2 := range a { |
|
||||
print(i2, "\t") // 输出每一个值
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
MergeSort 实现归并排序(前提列表有序) |
|
||||
包含:分解 + 合并 |
|
||||
*/ |
|
||||
func MergeSort(li []int, low, high int) { |
|
||||
if low < high { |
|
||||
mid := (low + high) / 2 |
|
||||
MergeSort(li, low, mid) |
|
||||
MergeSort(li, mid+1, high) |
|
||||
Merge(li, low, mid, high) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Merge 归并 |
|
||||
*/ |
|
||||
func Merge(li []int, low, mid, high int) { |
|
||||
i, j, lt, t := low, mid+1, make([]int, len(li)), 0 |
|
||||
for i <= mid && j <= high { // 将结果拼接到新的数组
|
|
||||
if li[i] < li[j] { |
|
||||
lt[t], i, t = li[i], i+1, t+1 |
|
||||
} else { |
|
||||
lt[t], j, t = li[j], j+1, t+1 |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
for i <= mid { |
|
||||
lt[t], i, t = li[i], i+1, t+1 |
|
||||
} |
|
||||
for j <= high { |
|
||||
lt[t], j, t = li[j], j+1, t+1 |
|
||||
} |
|
||||
|
|
||||
for i, j := low, 0; i <= high; i, j = i+1, j+1 { // 因为存在递归,将数值填回数组
|
|
||||
li[i] = lt[j] |
|
||||
} |
|
||||
} |
|
@ -1,47 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
// 快速排序
|
|
||||
func main() { |
|
||||
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
|
||||
Quick(a, 0, len(a)-1) |
|
||||
|
|
||||
for _, i2 := range a { |
|
||||
print(i2, "\t") // 输出每一个值
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Quick 实现快速排序 O(n * log(n)) |
|
||||
a : 被排序数组 |
|
||||
返回:排序完毕数组 |
|
||||
*/ |
|
||||
func Quick(slice []int, left, right int) { |
|
||||
if left < right { |
|
||||
mid := partition(slice, left, right) // 获取归位中值
|
|
||||
Quick(slice, left, mid-1) // 操作 中值 左边数组
|
|
||||
Quick(slice, mid+1, right) // 操作 中值 右边数组
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
partition 归位函数,获取一个关于某值对称的数组 |
|
||||
*/ |
|
||||
func partition(slice []int, left, right int) int { |
|
||||
tmp := slice[left] // 获取左侧第一个数
|
|
||||
for left < right { |
|
||||
// 进行逐个实现归位操作,将列表形成一个对称列表
|
|
||||
// 左边比 tmp 大的数,调至右边
|
|
||||
for left < right && slice[right] >= tmp { |
|
||||
right-- |
|
||||
} |
|
||||
slice[left] = slice[right] |
|
||||
|
|
||||
// 右边比 tmp 小的数,调至左边
|
|
||||
for left < right && slice[left] <= tmp { |
|
||||
left++ |
|
||||
} |
|
||||
slice[right] = slice[left] |
|
||||
} |
|
||||
slice[left] = tmp |
|
||||
return left |
|
||||
} |
|
@ -1,30 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
// 选择排序
|
|
||||
func main() { |
|
||||
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
|
||||
Select(a) |
|
||||
|
|
||||
for _, i2 := range a { |
|
||||
print(i2, "\t") // 输出每一个值
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Select 实现选择排序 O(n * n) |
|
||||
a : 被排序数组 |
|
||||
返回:排序完毕数组 |
|
||||
*/ |
|
||||
func Select(a []int) { |
|
||||
for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素
|
|
||||
theMin := i // 记录最小值记录
|
|
||||
for ii := i + 1; ii < j; ii++ { // 循环无序列表部分
|
|
||||
if a[theMin] > a[ii] { // 较大的值移至后边
|
|
||||
theMin = ii // 较大的值移至后边
|
|
||||
} |
|
||||
} |
|
||||
if theMin != i { |
|
||||
a[i], a[theMin] = a[theMin], a[i] |
|
||||
} |
|
||||
} |
|
||||
} |
|
@ -1,38 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
/*** |
|
||||
希尔排序 |
|
||||
*/ |
|
||||
func main() { |
|
||||
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
|
||||
|
|
||||
for d := len(a); d >= 1; d = d / 2 { |
|
||||
Shell(a, d) |
|
||||
} |
|
||||
|
|
||||
for _, i2 := range a { |
|
||||
print(i2, "\t") // 输出每一个值
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
Shell 实现希尔排序 O(n * n) |
|
||||
a : 被排序数组 |
|
||||
返回:排序完毕数组 |
|
||||
*/ |
|
||||
func Shell(s []int, get int) { |
|
||||
n := len(s) |
|
||||
if n < 2 { |
|
||||
return |
|
||||
} |
|
||||
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) |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func swap(slice []int, i int, j int) { |
|
||||
slice[i], slice[j] = slice[j], slice[i] |
|
||||
} |
|
@ -1,34 +1,44 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
import ( |
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
"fmt" |
||||
|
"strconv" |
||||
2021/08/27 17:10 <DIR> . |
) |
||||
2021/08/27 17:10 <DIR> .. |
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
func main() { |
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
|
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
// 时间复杂度=o(1)
|
||||
2021/08/27 17:10 0 02算法运行效率与时间复杂度.go |
fmt.Println("1 Hello World!") |
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
|
||||
2021/06/29 15:29 321 04 空间复杂度.md |
// 时间复杂度=o(n)
|
||||
2021/06/29 15:29 228 05 递归.md |
for i, n := 0, 100; i < n; i++ { |
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
fmt.Println(strconv.Itoa(i), " Hello World!") |
||||
2021/06/29 15:29 145 07 顺序查找.md |
} |
||||
2021/06/29 15:29 212 08 二分查找.md |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
// 时间复杂度=o(n)
|
||||
2021/06/29 15:29 484 10 排序.md |
for i, n, m := 0, 100, 10; i < n; i++ { |
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
for j := 0; j < m; j++ { |
||||
2021/06/29 15:29 2,161 12 选择排序.md |
fmt.Println(strconv.Itoa(i), strconv.Itoa(j), " Hello World!") |
||||
2021/06/29 15:29 1,588 13 插入排序.md |
} |
||||
2021/06/29 15:29 2,018 14 快速排序.md |
} |
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
// 时间复杂度=o(1)
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
fmt.Println("1 Hello World!") |
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
fmt.Println("2 Hello World!") |
||||
2021/06/29 15:29 1,442 19 计数排序.md |
fmt.Println("3 Hello World!") |
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
// 时间复杂度=o(n<sup>2</sup>)
|
||||
2021/08/27 17:10 442 a.txt |
for i, n, m := 0, 100, 10; i < n; i++ { |
||||
2021/08/27 17:05 <DIR> img |
fmt.Println(strconv.Itoa(i), " Hello World!") |
||||
24 个文件 24,336 字节 |
for j := 0; j < m; j++ { |
||||
3 个目录 179,901,222,912 可用字节 |
fmt.Println(strconv.Itoa(j), " Hello World!") |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 时间复杂度=o(log n)
|
||||
|
n := 100 |
||||
|
for n > 1 { |
||||
|
fmt.Println(strconv.Itoa(n), " Hello World!") |
||||
|
n /= 2 |
||||
|
} |
||||
|
} |
||||
|
@ -1,35 +0,0 @@ |
|||||
驱动器 D 中的卷是 Data |
|
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
|
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
|
||||
2021/08/27 17:10 <DIR> .. |
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
|
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
|
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
|
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
|
||||
2021/08/27 17:10 0 03简单判断时间复杂度.go |
|
||||
2021/06/29 15:29 321 04 空间复杂度.md |
|
||||
2021/06/29 15:29 228 05 递归.md |
|
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
|
||||
2021/06/29 15:29 145 07 顺序查找.md |
|
||||
2021/06/29 15:29 212 08 二分查找.md |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
|
||||
2021/06/29 15:29 484 10 排序.md |
|
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
25 个文件 25,945 字节 |
|
||||
3 个目录 179,901,218,816 可用字节 |
|
@ -1,36 +0,0 @@ |
|||||
驱动器 D 中的卷是 Data |
|
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
|
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
|
||||
2021/08/27 17:10 <DIR> .. |
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
|
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
|
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
|
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
|
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
|
||||
2021/06/29 15:29 321 04 空间复杂度.md |
|
||||
2021/08/27 17:10 0 04空间复杂度.go |
|
||||
2021/06/29 15:29 228 05 递归.md |
|
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
|
||||
2021/06/29 15:29 145 07 顺序查找.md |
|
||||
2021/06/29 15:29 212 08 二分查找.md |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
|
||||
2021/06/29 15:29 484 10 排序.md |
|
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
26 个文件 27,615 字节 |
|
||||
3 个目录 179,901,214,720 可用字节 |
|
@ -1,37 +0,0 @@ |
|||||
驱动器 D 中的卷是 Data |
|
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
|
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
|
||||
2021/08/27 17:10 <DIR> .. |
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
|
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
|
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
|
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
|
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
|
||||
2021/06/29 15:29 321 04 空间复杂度.md |
|
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
|
||||
2021/06/29 15:29 228 05 递归.md |
|
||||
2021/08/27 17:10 0 05递归.go |
|
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
|
||||
2021/06/29 15:29 145 07 顺序查找.md |
|
||||
2021/06/29 15:29 212 08 二分查找.md |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
|
||||
2021/06/29 15:29 484 10 排序.md |
|
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
27 个文件 29,338 字节 |
|
||||
3 个目录 179,901,210,624 可用字节 |
|
@ -1,38 +1,21 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
import ( |
||||
|
"fmt" |
||||
|
) |
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
/*** |
||||
2021/08/27 17:10 <DIR> .. |
问题:将 n 格元素从 A 经过 B 移动到 C |
||||
2021/06/29 15:29 124 01 算法入门概念.md |
小数 必须在 大数的上侧,及存在顺序问题 |
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
*/ |
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
func main() { |
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
run(3, "A", "B", "C") |
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
} |
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
|
||||
2021/06/29 15:29 321 04 空间复杂度.md |
func run(n int, a, b, c string) { |
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
if n > 0 { |
||||
2021/06/29 15:29 228 05 递归.md |
run(n-1, a, c, b) |
||||
2021/08/27 17:10 1,770 05递归.go |
fmt.Println("从【" + a + "】移动到【" + c + "】") |
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
run(n-1, b, a, c) |
||||
2021/08/27 17:10 0 06汉偌塔问题.go |
} |
||||
2021/06/29 15:29 145 07 顺序查找.md |
} |
||||
2021/06/29 15:29 212 08 二分查找.md |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
|
||||
2021/06/29 15:29 484 10 排序.md |
|
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
28 个文件 31,108 字节 |
|
||||
3 个目录 179,901,206,528 可用字节 |
|
||||
|
@ -1,39 +1,18 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
import "fmt" |
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
func main() { |
||||
2021/08/27 17:10 <DIR> .. |
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
list := []int{1, 2, 3, 45, 13, 16, 7} |
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
fmt.Println(ListQuery(list, 13)) |
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
} |
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
|
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
func ListQuery(list []int, k int) int { |
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
for i, j := 0, len(list); i < j; i++ { |
||||
2021/06/29 15:29 321 04 空间复杂度.md |
if list[i] == k { |
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
return i |
||||
2021/06/29 15:29 228 05 递归.md |
} |
||||
2021/08/27 17:10 1,770 05递归.go |
} |
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
return -1 |
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
} |
||||
2021/06/29 15:29 145 07 顺序查找.md |
|
||||
2021/08/27 17:10 0 07顺序查找.go |
|
||||
2021/06/29 15:29 212 08 二分查找.md |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
|
||||
2021/06/29 15:29 484 10 排序.md |
|
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
29 个文件 32,931 字节 |
|
||||
3 个目录 179,901,202,432 可用字节 |
|
||||
|
@ -1,40 +1,38 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
import ( |
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
"fmt" |
||||
|
"sort" |
||||
2021/08/27 17:10 <DIR> . |
) |
||||
2021/08/27 17:10 <DIR> .. |
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
func main() { |
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
|
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
list := []int{1, 2, 3, 45, 13, 16, 7} |
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
fmt.Println(BinaryQuery(list, 13)) |
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
} |
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
|
||||
2021/06/29 15:29 321 04 空间复杂度.md |
// BinaryQuery 二分查找的实现,如果查找成功返回索引;否则返回-1
|
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
func BinaryQuery(list []int, target int) int { |
||||
2021/06/29 15:29 228 05 递归.md |
|
||||
2021/08/27 17:10 1,770 05递归.go |
// 定义并初始化low和high,声明mid
|
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
low, high := 0, len(list)-1 |
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
|
||||
2021/06/29 15:29 145 07 顺序查找.md |
// 前提必须进行排序
|
||||
2021/08/27 17:10 1,874 07顺序查找.go |
sort.Ints(list) |
||||
2021/06/29 15:29 212 08 二分查找.md |
fmt.Println(list) |
||||
2021/08/27 17:10 0 08二分查找.go |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
for low <= high { |
||||
2021/06/29 15:29 484 10 排序.md |
mid := (low + high) / 2 |
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
fmt.Println(low, high, mid) |
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
if list[mid] == target { |
||||
2021/06/29 15:29 2,018 14 快速排序.md |
return mid |
||||
2021/06/29 15:29 1,345 15 树.md |
} else if list[mid] > target { |
||||
2021/06/29 15:29 2,609 16 堆排序.md |
high = mid - 1 |
||||
2021/06/29 15:29 1,646 17 归并排序.md |
} else { |
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
low = mid + 1 |
||||
2021/06/29 15:29 1,442 19 计数排序.md |
} |
||||
2021/06/29 15:29 362 20 桶排序.md |
} |
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
return -1 |
||||
2021/08/27 17:05 <DIR> img |
} |
||||
30 个文件 34,805 字节 |
|
||||
3 个目录 179,901,198,336 可用字节 |
|
||||
|
@ -1,41 +0,0 @@ |
|||||
驱动器 D 中的卷是 Data |
|
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
|
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
|
||||
2021/08/27 17:10 <DIR> .. |
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
|
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
|
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
|
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
|
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
|
||||
2021/06/29 15:29 321 04 空间复杂度.md |
|
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
|
||||
2021/06/29 15:29 228 05 递归.md |
|
||||
2021/08/27 17:10 1,770 05递归.go |
|
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
|
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
|
||||
2021/06/29 15:29 145 07 顺序查找.md |
|
||||
2021/08/27 17:10 1,874 07顺序查找.go |
|
||||
2021/06/29 15:29 212 08 二分查找.md |
|
||||
2021/08/27 17:10 1,925 08二分查找.go |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
|
||||
2021/08/27 17:10 0 09查找方式对比.go |
|
||||
2021/06/29 15:29 484 10 排序.md |
|
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
31 个文件 36,730 字节 |
|
||||
3 个目录 179,901,194,240 可用字节 |
|
@ -1,42 +0,0 @@ |
|||||
驱动器 D 中的卷是 Data |
|
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
|
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
|
||||
2021/08/27 17:10 <DIR> .. |
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
|
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
|
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
|
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
|
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
|
||||
2021/06/29 15:29 321 04 空间复杂度.md |
|
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
|
||||
2021/06/29 15:29 228 05 递归.md |
|
||||
2021/08/27 17:10 1,770 05递归.go |
|
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
|
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
|
||||
2021/06/29 15:29 145 07 顺序查找.md |
|
||||
2021/08/27 17:10 1,874 07顺序查找.go |
|
||||
2021/06/29 15:29 212 08 二分查找.md |
|
||||
2021/08/27 17:10 1,925 08二分查找.go |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
|
||||
2021/08/27 17:10 1,980 09查找方式对比.go |
|
||||
2021/06/29 15:29 484 10 排序.md |
|
||||
2021/08/27 17:10 0 10排序.go |
|
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
32 个文件 38,710 字节 |
|
||||
3 个目录 179,901,190,144 可用字节 |
|
@ -1,43 +1,93 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
import "fmt" |
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
func main() { |
||||
2021/08/27 17:10 <DIR> .. |
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
fmt.Println("执行 Bubble") |
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
fmt.Println(Bubble([]int{2, 1, 45, 13, 16, 3, 7})) |
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
fmt.Println("执行 Bubble2") |
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
fmt.Println(Bubble2([]int{2, 1, 45, 13, 16, 3, 7})) |
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
fmt.Println("执行 Bubble3") |
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
fmt.Println(Bubble3([]int{2, 1, 45, 13, 16, 3, 7})) |
||||
2021/06/29 15:29 321 04 空间复杂度.md |
fmt.Println("执行 Bubble4——1") |
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
fmt.Println(Bubble4([]int{2, 1, 45, 13, 16, 3, 7})) |
||||
2021/06/29 15:29 228 05 递归.md |
fmt.Println("执行 Bubble4——2") |
||||
2021/08/27 17:10 1,770 05递归.go |
fmt.Println(Bubble4([]int{1, 2, 3, 4, 5, 6, 7})) |
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
fmt.Println("执行 Bubble4——3") |
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
fmt.Println(Bubble4([]int{7, 6, 5, 4, 3, 2, 1})) |
||||
2021/06/29 15:29 145 07 顺序查找.md |
} |
||||
2021/08/27 17:10 1,874 07顺序查找.go |
|
||||
2021/06/29 15:29 212 08 二分查找.md |
/** |
||||
2021/08/27 17:10 1,925 08二分查找.go |
Bubble 【优化】实现冒泡排序 |
||||
2021/06/29 15:29 163 09 查找方式对比.md |
a : 被排序数组 |
||||
2021/08/27 17:10 1,980 09查找方式对比.go |
返回:排序完毕数组 |
||||
2021/06/29 15:29 484 10 排序.md |
*/ |
||||
2021/08/27 17:10 2,027 10排序.go |
func Bubble(a []int) []int { |
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素
|
||||
2021/08/27 17:10 0 11冒泡排序.go |
b := true // 定义变量优化
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
for ii := 0; ii < j-1; ii++ { // 循环无序列表部分
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
if a[i] < a[ii] { // 从一个元素与一个无序值比较
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
a[ii], a[i] = a[i], a[ii] // 较大的值移至后边
|
||||
2021/06/29 15:29 1,345 15 树.md |
b = false // 发生交换
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
} |
||||
2021/06/29 15:29 1,646 17 归并排序.md |
} |
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
if b { // 为存在交换,结束循环
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
break |
||||
2021/06/29 15:29 362 20 桶排序.md |
} |
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
} |
||||
2021/08/27 17:10 442 a.txt |
return a |
||||
2021/08/27 17:05 <DIR> img |
} |
||||
33 个文件 40,737 字节 |
|
||||
3 个目录 179,901,186,048 可用字节 |
/** |
||||
|
Bubble2 实现冒泡排序 |
||||
|
a : 被排序数组 |
||||
|
返回 :排序完毕数组 |
||||
|
*/ |
||||
|
func Bubble2(a []int) []int { |
||||
|
for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素
|
||||
|
for ii := i + 1; ii < j; ii++ { // 循环无序列表部分
|
||||
|
if a[i] > a[ii] { // 从一个元素与一个无序值比较
|
||||
|
a[ii], a[i] = a[i], a[ii] // 较大的值移至后边
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return a |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
Bubble3 【异同】实现冒泡排序 |
||||
|
a : 被排序数组 |
||||
|
返回 :排序完毕数组 |
||||
|
*/ |
||||
|
func Bubble3(a []int) []int { |
||||
|
for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素
|
||||
|
for ii := i; ii < j-1; ii++ { // 循环无序列表部分
|
||||
|
if a[ii] > a[ii+1] { // 从一个元素与一个无序值比较
|
||||
|
a[ii], a[ii+1] = a[ii+1], a[ii] // 较大的值移至后边
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return a |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
Bubble4 【异同-优化】实现冒泡排序 |
||||
|
a : 被排序数组 |
||||
|
返回 :排序完毕数组 |
||||
|
*/ |
||||
|
func Bubble4(a []int) []int { |
||||
|
for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素
|
||||
|
b := true // 定义变量优化
|
||||
|
for ii := 0; ii < j-1; ii++ { // 循环无序列表部分
|
||||
|
if a[ii] > a[ii+1] { // 从一个元素与一个无序值比较
|
||||
|
a[ii], a[ii+1] = a[ii+1], a[ii] // 较大的值移至后边
|
||||
|
b = false |
||||
|
} |
||||
|
} |
||||
|
if b { // 为存在交换,结束循环
|
||||
|
break |
||||
|
} |
||||
|
} |
||||
|
return a |
||||
|
} |
||||
|
@ -1,44 +1,30 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
// 选择排序
|
||||
|
func main() { |
||||
|
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
||||
|
Select(a) |
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
for _, i2 := range a { |
||||
2021/08/27 17:10 <DIR> .. |
print(i2, "\t") // 输出每一个值
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
} |
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
} |
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
/** |
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
Select 实现选择排序 O(n * n) |
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
a : 被排序数组 |
||||
2021/06/29 15:29 321 04 空间复杂度.md |
返回:排序完毕数组 |
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
*/ |
||||
2021/06/29 15:29 228 05 递归.md |
func Select(a []int) { |
||||
2021/08/27 17:10 1,770 05递归.go |
for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素
|
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
theMin := i // 记录最小值记录
|
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
for ii := i + 1; ii < j; ii++ { // 循环无序列表部分
|
||||
2021/06/29 15:29 145 07 顺序查找.md |
if a[theMin] > a[ii] { // 较大的值移至后边
|
||||
2021/08/27 17:10 1,874 07顺序查找.go |
theMin = ii // 较大的值移至后边
|
||||
2021/06/29 15:29 212 08 二分查找.md |
} |
||||
2021/08/27 17:10 1,925 08二分查找.go |
} |
||||
2021/06/29 15:29 163 09 查找方式对比.md |
if theMin != i { |
||||
2021/08/27 17:10 1,980 09查找方式对比.go |
a[i], a[theMin] = a[theMin], a[i] |
||||
2021/06/29 15:29 484 10 排序.md |
} |
||||
2021/08/27 17:10 2,027 10排序.go |
} |
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
} |
||||
2021/08/27 17:10 2,078 11冒泡排序.go |
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/08/27 17:10 0 12选择排序.go |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
34 个文件 42,815 字节 |
|
||||
3 个目录 179,901,181,952 可用字节 |
|
||||
|
@ -1,45 +1,33 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
// 插入排序
|
||||
|
func main() { |
||||
|
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
||||
|
Insert(a) |
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
for _, i2 := range a { |
||||
2021/08/27 17:10 <DIR> .. |
print(i2, "\t") // 输出每一个值
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
} |
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
} |
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
/** |
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
Insert 实现插入排序 O(n * n) |
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
a : 被排序数组 |
||||
2021/06/29 15:29 321 04 空间复杂度.md |
返回:排序完毕数组 |
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
*/ |
||||
2021/06/29 15:29 228 05 递归.md |
func Insert(s []int) { |
||||
2021/08/27 17:10 1,770 05递归.go |
n := len(s) |
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
if n < 2 { |
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
return |
||||
2021/06/29 15:29 145 07 顺序查找.md |
} |
||||
2021/08/27 17:10 1,874 07顺序查找.go |
for i := 1; i < n; i++ { |
||||
2021/06/29 15:29 212 08 二分查找.md |
for j := i; j > 0 && s[j] < s[j-1]; j-- { |
||||
2021/08/27 17:10 1,925 08二分查找.go |
// 选择第j张比较第j - 1张小,则循环交换较大的值
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
swap2(s, j, j-1) |
||||
2021/08/27 17:10 1,980 09查找方式对比.go |
} |
||||
2021/06/29 15:29 484 10 排序.md |
} |
||||
2021/08/27 17:10 2,027 10排序.go |
} |
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
|
||||
2021/08/27 17:10 2,078 11冒泡排序.go |
func swap2(slice []int, i int, j int) { |
||||
2021/06/29 15:29 2,161 12 选择排序.md |
slice[i], slice[j] = slice[j], slice[i] |
||||
2021/08/27 17:10 2,129 12选择排序.go |
} |
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/08/27 17:10 0 13插入排序.go |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
35 个文件 44,944 字节 |
|
||||
3 个目录 179,901,177,856 可用字节 |
|
||||
|
@ -1,46 +1,47 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
// 快速排序
|
||||
|
func main() { |
||||
|
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
||||
|
Quick(a, 0, len(a)-1) |
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
for _, i2 := range a { |
||||
2021/08/27 17:10 <DIR> .. |
print(i2, "\t") // 输出每一个值
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
} |
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
} |
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
/** |
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
Quick 实现快速排序 O(n * log(n)) |
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
a : 被排序数组 |
||||
2021/06/29 15:29 321 04 空间复杂度.md |
返回:排序完毕数组 |
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
*/ |
||||
2021/06/29 15:29 228 05 递归.md |
func Quick(slice []int, left, right int) { |
||||
2021/08/27 17:10 1,770 05递归.go |
if left < right { |
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
mid := partition(slice, left, right) // 获取归位中值
|
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
Quick(slice, left, mid-1) // 操作 中值 左边数组
|
||||
2021/06/29 15:29 145 07 顺序查找.md |
Quick(slice, mid+1, right) // 操作 中值 右边数组
|
||||
2021/08/27 17:10 1,874 07顺序查找.go |
} |
||||
2021/06/29 15:29 212 08 二分查找.md |
} |
||||
2021/08/27 17:10 1,925 08二分查找.go |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
/** |
||||
2021/08/27 17:10 1,980 09查找方式对比.go |
partition 归位函数,获取一个关于某值对称的数组 |
||||
2021/06/29 15:29 484 10 排序.md |
*/ |
||||
2021/08/27 17:10 2,027 10排序.go |
func partition(slice []int, left, right int) int { |
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
tmp := slice[left] // 获取左侧第一个数
|
||||
2021/08/27 17:10 2,078 11冒泡排序.go |
for left < right { |
||||
2021/06/29 15:29 2,161 12 选择排序.md |
// 进行逐个实现归位操作,将列表形成一个对称列表
|
||||
2021/08/27 17:10 2,129 12选择排序.go |
// 左边比 tmp 大的数,调至右边
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
for left < right && slice[right] >= tmp { |
||||
2021/08/27 17:10 2,180 13插入排序.go |
right-- |
||||
2021/06/29 15:29 2,018 14 快速排序.md |
} |
||||
2021/08/27 17:10 0 14快速排序.go |
slice[left] = slice[right] |
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
// 右边比 tmp 小的数,调至左边
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
for left < right && slice[left] <= tmp { |
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
left++ |
||||
2021/06/29 15:29 1,442 19 计数排序.md |
} |
||||
2021/06/29 15:29 362 20 桶排序.md |
slice[right] = slice[left] |
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
} |
||||
2021/08/27 17:10 442 a.txt |
slice[left] = tmp |
||||
2021/08/27 17:05 <DIR> img |
return left |
||||
36 个文件 47,124 字节 |
} |
||||
3 个目录 179,901,173,760 可用字节 |
|
||||
|
@ -1,47 +0,0 @@ |
|||||
驱动器 D 中的卷是 Data |
|
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
|
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
|
||||
2021/08/27 17:10 <DIR> .. |
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
|
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
|
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
|
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
|
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
|
||||
2021/06/29 15:29 321 04 空间复杂度.md |
|
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
|
||||
2021/06/29 15:29 228 05 递归.md |
|
||||
2021/08/27 17:10 1,770 05递归.go |
|
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
|
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
|
||||
2021/06/29 15:29 145 07 顺序查找.md |
|
||||
2021/08/27 17:10 1,874 07顺序查找.go |
|
||||
2021/06/29 15:29 212 08 二分查找.md |
|
||||
2021/08/27 17:10 1,925 08二分查找.go |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
|
||||
2021/08/27 17:10 1,980 09查找方式对比.go |
|
||||
2021/06/29 15:29 484 10 排序.md |
|
||||
2021/08/27 17:10 2,027 10排序.go |
|
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
|
||||
2021/08/27 17:10 2,078 11冒泡排序.go |
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/08/27 17:10 2,129 12选择排序.go |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/08/27 17:10 2,180 13插入排序.go |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/08/27 17:10 2,231 14快速排序.go |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/08/27 17:10 0 15树.go |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
37 个文件 49,355 字节 |
|
||||
3 个目录 179,901,169,664 可用字节 |
|
@ -1,48 +1,57 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
// 堆排序
|
||||
|
func main() { |
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
||||
2021/08/27 17:10 <DIR> .. |
Heap(a) |
||||
2021/06/29 15:29 124 01 算法入门概念.md |
|
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
for _, i2 := range a { |
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
print(i2, "\t") // 输出每一个值
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
} |
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
} |
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
|
||||
2021/06/29 15:29 321 04 空间复杂度.md |
/** |
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
Heap 进行排序 |
||||
2021/06/29 15:29 228 05 递归.md |
1. 建堆 |
||||
2021/08/27 17:10 1,770 05递归.go |
2. 交换值并向下调整 |
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
*/ |
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
func Heap(li []int) { |
||||
2021/06/29 15:29 145 07 顺序查找.md |
n := len(li) |
||||
2021/08/27 17:10 1,874 07顺序查找.go |
for i := (n - 2) / 2; i >= 0; i-- { // 创建堆
|
||||
2021/06/29 15:29 212 08 二分查找.md |
sift(li, i, n-1) |
||||
2021/08/27 17:10 1,925 08二分查找.go |
} |
||||
2021/06/29 15:29 163 09 查找方式对比.md |
|
||||
2021/08/27 17:10 1,980 09查找方式对比.go |
for i := n - 1; i >= 0; i-- { // 先做交换(减少内存)后做向下调整
|
||||
2021/06/29 15:29 484 10 排序.md |
li[0], li[i] = li[i], li[0] |
||||
2021/08/27 17:10 2,027 10排序.go |
sift(li, 0, i-1) |
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
} |
||||
2021/08/27 17:10 2,078 11冒泡排序.go |
} |
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/08/27 17:10 2,129 12选择排序.go |
/** |
||||
2021/06/29 15:29 1,588 13 插入排序.md |
sift 向下调整 |
||||
2021/08/27 17:10 2,180 13插入排序.go |
li 数组列表 |
||||
2021/06/29 15:29 2,018 14 快速排序.md |
low 堆的根节点的下标 |
||||
2021/08/27 17:10 2,231 14快速排序.go |
high 堆的最后一个元素的下标 |
||||
2021/06/29 15:29 1,345 15 树.md |
*/ |
||||
2021/08/27 17:10 2,276 15树.go |
func sift(li []int, low, high int) { |
||||
2021/06/29 15:29 2,609 16 堆排序.md |
/** |
||||
2021/08/27 17:10 0 16堆排序.go |
i 指一层中的根 |
||||
2021/06/29 15:29 1,646 17 归并排序.md |
j 开始是左孩子 |
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
t 指一层中某个需要调整的值 |
||||
2021/06/29 15:29 1,442 19 计数排序.md |
*/ |
||||
2021/06/29 15:29 362 20 桶排序.md |
i, j, t := low, 2*low+1, li[low] |
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
for j <= high { // 在范围内进行循环,防止越界
|
||||
2021/08/27 17:10 442 a.txt |
if j+1 <= high && li[j+1] > li[j] { // 比较一个根下的两个孩子大小,取大值的位置
|
||||
2021/08/27 17:05 <DIR> img |
j = j + 1 |
||||
38 个文件 51,631 字节 |
} |
||||
3 个目录 179,901,165,568 可用字节 |
if li[j] > t { // 与指定根值比较,若值比根大,继续循环
|
||||
|
li[i], i, j = li[j], j, 2*i+1 |
||||
|
} else { |
||||
|
// li[i] = t // 将临时值放回,移至循环结束位置
|
||||
|
break |
||||
|
} |
||||
|
} |
||||
|
li[i] = t // 将临时值放回
|
||||
|
|
||||
|
} |
||||
|
@ -1,49 +1,49 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
// 归并排序
|
||||
|
func main() { |
||||
|
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
||||
|
MergeSort(a, 0, len(a)-1) |
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
for _, i2 := range a { |
||||
2021/08/27 17:10 <DIR> .. |
print(i2, "\t") // 输出每一个值
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
} |
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
} |
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
/** |
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
MergeSort 实现归并排序(前提列表有序) |
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
包含:分解 + 合并 |
||||
2021/06/29 15:29 321 04 空间复杂度.md |
*/ |
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
func MergeSort(li []int, low, high int) { |
||||
2021/06/29 15:29 228 05 递归.md |
if low < high { |
||||
2021/08/27 17:10 1,770 05递归.go |
mid := (low + high) / 2 |
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
MergeSort(li, low, mid) |
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
MergeSort(li, mid+1, high) |
||||
2021/06/29 15:29 145 07 顺序查找.md |
Merge(li, low, mid, high) |
||||
2021/08/27 17:10 1,874 07顺序查找.go |
} |
||||
2021/06/29 15:29 212 08 二分查找.md |
} |
||||
2021/08/27 17:10 1,925 08二分查找.go |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
/** |
||||
2021/08/27 17:10 1,980 09查找方式对比.go |
Merge 归并 |
||||
2021/06/29 15:29 484 10 排序.md |
*/ |
||||
2021/08/27 17:10 2,027 10排序.go |
func Merge(li []int, low, mid, high int) { |
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
i, j, lt, t := low, mid+1, make([]int, len(li)), 0 |
||||
2021/08/27 17:10 2,078 11冒泡排序.go |
for i <= mid && j <= high { // 将结果拼接到新的数组
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
if li[i] < li[j] { |
||||
2021/08/27 17:10 2,129 12选择排序.go |
lt[t], i, t = li[i], i+1, t+1 |
||||
2021/06/29 15:29 1,588 13 插入排序.md |
} else { |
||||
2021/08/27 17:10 2,180 13插入排序.go |
lt[t], j, t = li[j], j+1, t+1 |
||||
2021/06/29 15:29 2,018 14 快速排序.md |
} |
||||
2021/08/27 17:10 2,231 14快速排序.go |
} |
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/08/27 17:10 2,276 15树.go |
for i <= mid { |
||||
2021/06/29 15:29 2,609 16 堆排序.md |
lt[t], i, t = li[i], i+1, t+1 |
||||
2021/08/27 17:10 2,325 16堆排序.go |
} |
||||
2021/06/29 15:29 1,646 17 归并排序.md |
for j <= high { |
||||
2021/08/27 17:10 0 17归并排序.go |
lt[t], j, t = li[j], j+1, t+1 |
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
} |
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
for i, j := low, 0; i <= high; i, j = i+1, j+1 { // 因为存在递归,将数值填回数组
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
li[i] = lt[j] |
||||
2021/08/27 17:10 442 a.txt |
} |
||||
2021/08/27 17:05 <DIR> img |
} |
||||
39 个文件 53,956 字节 |
|
||||
3 个目录 179,901,161,472 可用字节 |
|
||||
|
@ -1,50 +1,38 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
/*** |
||||
|
希尔排序 |
||||
|
*/ |
||||
|
func main() { |
||||
|
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
for d := len(a); d >= 1; d = d / 2 { |
||||
2021/08/27 17:10 <DIR> .. |
Shell(a, d) |
||||
2021/06/29 15:29 124 01 算法入门概念.md |
} |
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
|
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
for _, i2 := range a { |
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
print(i2, "\t") // 输出每一个值
|
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
} |
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
} |
||||
2021/06/29 15:29 321 04 空间复杂度.md |
|
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
/** |
||||
2021/06/29 15:29 228 05 递归.md |
Shell 实现希尔排序 O(n * n) |
||||
2021/08/27 17:10 1,770 05递归.go |
a : 被排序数组 |
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
返回:排序完毕数组 |
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
*/ |
||||
2021/06/29 15:29 145 07 顺序查找.md |
func Shell(s []int, get int) { |
||||
2021/08/27 17:10 1,874 07顺序查找.go |
n := len(s) |
||||
2021/06/29 15:29 212 08 二分查找.md |
if n < 2 { |
||||
2021/08/27 17:10 1,925 08二分查找.go |
return |
||||
2021/06/29 15:29 163 09 查找方式对比.md |
} |
||||
2021/08/27 17:10 1,980 09查找方式对比.go |
for i := get; i < n; i++ { |
||||
2021/06/29 15:29 484 10 排序.md |
for j := i; j > 0 && s[j] < s[j-get]; j = j - get { |
||||
2021/08/27 17:10 2,027 10排序.go |
// 选择第j张比较第j - get张小,则循环交换较大的值
|
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
swap1(s, j, j-get) |
||||
2021/08/27 17:10 2,078 11冒泡排序.go |
} |
||||
2021/06/29 15:29 2,161 12 选择排序.md |
} |
||||
2021/08/27 17:10 2,129 12选择排序.go |
} |
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/08/27 17:10 2,180 13插入排序.go |
func swap1(slice []int, i int, j int) { |
||||
2021/06/29 15:29 2,018 14 快速排序.md |
slice[i], slice[j] = slice[j], slice[i] |
||||
2021/08/27 17:10 2,231 14快速排序.go |
} |
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/08/27 17:10 2,276 15树.go |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/08/27 17:10 2,325 16堆排序.go |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/08/27 17:10 2,376 17归并排序.go |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/08/27 17:10 0 18希尔排序.go |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
40 个文件 56,332 字节 |
|
||||
3 个目录 179,901,153,280 可用字节 |
|
||||
|
@ -1,51 +1,28 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
// 计数排序
|
||||
|
func main() { |
||||
|
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
||||
|
Count(a, 50) |
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
for _, i2 := range a { |
||||
2021/08/27 17:10 <DIR> .. |
print(i2, "\t") // 输出每一个值
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
} |
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
} |
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
/** |
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
Count 实现计数排序 |
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
限制:仅限百内之整数 |
||||
2021/06/29 15:29 321 04 空间复杂度.md |
*/ |
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
func Count(li []int, max int) { |
||||
2021/06/29 15:29 228 05 递归.md |
a := make([]int, max) |
||||
2021/08/27 17:10 1,770 05递归.go |
for i := 0; i < len(li); i++ { |
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
a[li[i]] += 1 |
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
} |
||||
2021/06/29 15:29 145 07 顺序查找.md |
|
||||
2021/08/27 17:10 1,874 07顺序查找.go |
for i, j := 0, 0; i < max; i++ { |
||||
2021/06/29 15:29 212 08 二分查找.md |
for ii := a[i]; ii > 0; ii, j = ii-1, j+1 { |
||||
2021/08/27 17:10 1,925 08二分查找.go |
li[j] = i |
||||
2021/06/29 15:29 163 09 查找方式对比.md |
} |
||||
2021/08/27 17:10 1,980 09查找方式对比.go |
} |
||||
2021/06/29 15:29 484 10 排序.md |
} |
||||
2021/08/27 17:10 2,027 10排序.go |
|
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
|
||||
2021/08/27 17:10 2,078 11冒泡排序.go |
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/08/27 17:10 2,129 12选择排序.go |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/08/27 17:10 2,180 13插入排序.go |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/08/27 17:10 2,231 14快速排序.go |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/08/27 17:10 2,276 15树.go |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/08/27 17:10 2,325 16堆排序.go |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/08/27 17:10 2,376 17归并排序.go |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/08/27 17:10 2,427 18希尔排序.go |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/08/27 17:10 0 19计数排序.go |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
41 个文件 58,759 字节 |
|
||||
3 个目录 179,901,149,184 可用字节 |
|
||||
|
@ -1,52 +1,32 @@ |
|||||
驱动器 D 中的卷是 Data |
package main |
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
// 桶排序 - 失败
|
||||
|
func main() { |
||||
|
var a = []int{29, 10, 14, 37, 25, 18, 30} // 创建数组的简写声明
|
||||
|
Bucket(a, len(a), 50) |
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
for _, i2 := range a { |
||||
2021/08/27 17:10 <DIR> .. |
print(i2, "\t") // 输出每一个值
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
} |
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
} |
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
/** |
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
Bucket 实现桶排序 |
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
*/ |
||||
2021/06/29 15:29 321 04 空间复杂度.md |
func Bucket(li []int, n, max int) { |
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
// 创建桶
|
||||
2021/06/29 15:29 228 05 递归.md |
a, b := make([][]int, n), max/n // a 桶 b 单桶的大小
|
||||
2021/08/27 17:10 1,770 05递归.go |
for i := range a { |
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
a[i] = make([]int, 0) |
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
} |
||||
2021/06/29 15:29 145 07 顺序查找.md |
for i := 0; i < n; i++ { |
||||
2021/08/27 17:10 1,874 07顺序查找.go |
n := li[i] / b |
||||
2021/06/29 15:29 212 08 二分查找.md |
a[n] = append(a[n], li[i]) |
||||
2021/08/27 17:10 1,925 08二分查找.go |
} |
||||
2021/06/29 15:29 163 09 查找方式对比.md |
|
||||
2021/08/27 17:10 1,980 09查找方式对比.go |
for i, j := 0, n; i <= n; i = i + 1 { // 因为存在递归,将数值填回数组
|
||||
2021/06/29 15:29 484 10 排序.md |
for ii, jj := 0, len(a[i]); ii < jj; ii, j = ii+1, j+1 { |
||||
2021/08/27 17:10 2,027 10排序.go |
li[j] = a[i][ii] |
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
} |
||||
2021/08/27 17:10 2,078 11冒泡排序.go |
} |
||||
2021/06/29 15:29 2,161 12 选择排序.md |
} |
||||
2021/08/27 17:10 2,129 12选择排序.go |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/08/27 17:10 2,180 13插入排序.go |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/08/27 17:10 2,231 14快速排序.go |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/08/27 17:10 2,276 15树.go |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/08/27 17:10 2,325 16堆排序.go |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/08/27 17:10 2,376 17归并排序.go |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/08/27 17:10 2,427 18希尔排序.go |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/08/27 17:10 2,478 19计数排序.go |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/08/27 17:10 0 20桶排序.go |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
42 个文件 61,237 字节 |
|
||||
3 个目录 179,901,145,088 可用字节 |
|
||||
|
@ -1,53 +0,0 @@ |
|||||
驱动器 D 中的卷是 Data |
|
||||
卷的序列号是 D649-8FB3 |
|
||||
|
|
||||
D:\ViviCode\golangs_learn\golang_learn\data_paixu 的目录 |
|
||||
|
|
||||
2021/08/27 17:10 <DIR> . |
|
||||
2021/08/27 17:10 <DIR> .. |
|
||||
2021/06/29 15:29 124 01 算法入门概念.md |
|
||||
2021/08/27 17:10 1,542 01算法入门概念.go |
|
||||
2021/06/29 15:29 1,779 02 算法运行效率与时间复杂度.md |
|
||||
2021/08/27 17:10 1,609 02算法运行效率与时间复杂度.go |
|
||||
2021/06/29 15:29 406 03 简单判断时间复杂度.md |
|
||||
2021/08/27 17:10 1,670 03简单判断时间复杂度.go |
|
||||
2021/06/29 15:29 321 04 空间复杂度.md |
|
||||
2021/08/27 17:10 1,723 04空间复杂度.go |
|
||||
2021/06/29 15:29 228 05 递归.md |
|
||||
2021/08/27 17:10 1,770 05递归.go |
|
||||
2021/06/29 15:29 581 06 汉偌塔问题.md |
|
||||
2021/08/27 17:10 1,823 06汉偌塔问题.go |
|
||||
2021/06/29 15:29 145 07 顺序查找.md |
|
||||
2021/08/27 17:10 1,874 07顺序查找.go |
|
||||
2021/06/29 15:29 212 08 二分查找.md |
|
||||
2021/08/27 17:10 1,925 08二分查找.go |
|
||||
2021/06/29 15:29 163 09 查找方式对比.md |
|
||||
2021/08/27 17:10 1,980 09查找方式对比.go |
|
||||
2021/06/29 15:29 484 10 排序.md |
|
||||
2021/08/27 17:10 2,027 10排序.go |
|
||||
2021/06/29 15:29 2,351 11 冒泡排序.md |
|
||||
2021/08/27 17:10 2,078 11冒泡排序.go |
|
||||
2021/06/29 15:29 2,161 12 选择排序.md |
|
||||
2021/08/27 17:10 2,129 12选择排序.go |
|
||||
2021/06/29 15:29 1,588 13 插入排序.md |
|
||||
2021/08/27 17:10 2,180 13插入排序.go |
|
||||
2021/06/29 15:29 2,018 14 快速排序.md |
|
||||
2021/08/27 17:10 2,231 14快速排序.go |
|
||||
2021/06/29 15:29 1,345 15 树.md |
|
||||
2021/08/27 17:10 2,276 15树.go |
|
||||
2021/06/29 15:29 2,609 16 堆排序.md |
|
||||
2021/08/27 17:10 2,325 16堆排序.go |
|
||||
2021/06/29 15:29 1,646 17 归并排序.md |
|
||||
2021/08/27 17:10 2,376 17归并排序.go |
|
||||
2021/06/29 15:29 1,284 18 希尔排序.md |
|
||||
2021/08/27 17:10 2,427 18希尔排序.go |
|
||||
2021/06/29 15:29 1,442 19 计数排序.md |
|
||||
2021/08/27 17:10 2,478 19计数排序.go |
|
||||
2021/06/29 15:29 362 20 桶排序.md |
|
||||
2021/08/27 17:10 2,527 20桶排序.go |
|
||||
2021/06/29 15:29 1,103 21 排序方式对比.md |
|
||||
2021/08/27 17:10 0 21排序方式对比.go |
|
||||
2021/08/27 17:10 442 a.txt |
|
||||
2021/08/27 17:05 <DIR> img |
|
||||
43 个文件 63,764 字节 |
|
||||
3 个目录 179,901,140,992 可用字节 |
|
Loading…
Reference in new issue