最近在寻找画思维导图的软件,印象笔记中的思维导图比较符合我的需求,但我不知道怎么导出为图片(我想到的一种方法是导进语雀,这样自动就转化成图片了,不过这种方法比较麻烦,可以尝试调用语雀对印象笔记的 API 将 HTML 格式转为 PNG 格式),上面那个是 XMind 画出来的思维导图,XMind 是一个付费软件,内含有多种模板和功能,但有一种杀鸡用牛刀的意思。下面的是用 GitMind 画的思维导图,GitMind 是一款免费开源的在线思维导图软件,界面简洁、操作简单,支持Web云端保存,新建的脑图会自动保存至云端,可以随时登陆账户查看编辑、不用担心脑图文件发生丢失。简介好用,确认过眼神,是我喜欢的类型。
Bubble
核心思想
就像它的名字一样,冒泡排序,小的上浮,大的下沉。
代码实现
package main
import (
"fmt"
"github.com/zhangce1999/gods/utils"
)
func main() {
arr := utils.RandArray(10)
fmt.Println("Initial array is:", arr)
fmt.Println("")
for i := 0; i < len(arr); i++ {
for j := 0; j < len(arr)-1-i; j++ {
if arr[j] > arr[j+1] {
arr[j], arr[j+1] = arr[j+1], arr[j]
}
}
}
fmt.Println("Sorted array is: ", arr)
}
快速排序
核心思想
选择一个基本数(一般选第一个),大的放在左边,小的放在右边,然后对左边和右边的数字重复上面的操作,这是一个递归的过程。
代码实现
package main
import (
"fmt"
"github.com/zhangce1999/gods/utils"
)
// QKSort represents the quick sort
func QKSort(arr []int, L, P int) {
if len(arr) <= 1 {
return
}
x := arr[L]
i, j := L, P
for i != j {
for arr[j] > x {
j--
}
if i < j {
arr[i] = arr[j]
i++
for arr[i] <= x && i < j {
i++
}
if i < j {
arr[j] = arr[i]
j--
}
}
}
arr[i] = x
i++
j--
if L < j {
QKSort(arr, L, j)
}
if i < P {
QKSort(arr, i, P)
}
}
func main() {
arr := utils.RandArray(10)
fmt.Println("Initial array is:", arr)
QKSort(arr, 0, 9)
fmt.Println(arr)
fmt.Println("Sorted array is: ", arr)
}
嗨呀,这个排序算法实现的有问题,只有部分情况适用,可能是因为递归没有退出,正在修改程序。