02 2021 档案
摘要:package main import "fmt" // 快速排序 // 特征: // 1. 选定一个数,让这个数左边的比这个数小,右边比这个数大 // 2. 然后这个基数就是已经排好序的,将左边部分和右边部分执行1操作 // 3. 递归 // 实现: // 1. 难点: // a. 参考数怎么找?
阅读全文
摘要:package main import "fmt" // 环形单向链表 // 特征: 首尾相连 // 实现: 结构体 + 指针 // 1. 构建环形单向链表,类似单向链表,不过head指针存储值,并且链表尾部与头部相连 // 2. 环形单向链表添加节点则需要一个辅助节点 currentNode 指向
阅读全文
摘要:package main import ( "errors" "fmt" "log" ) // 单链表 // 特征: // 1. 每个节点都包含指向下一个节点的指针 next // 2. 链表逻辑上是序列,但在内存中存储是不规则的 // 实现: // 1. 头节点(根节点) head 单链表的起始位
阅读全文
摘要:package main import ( "errors" "fmt" ) // 队列 // 特征: // 1. 按照元素的添加顺序排序,并且容量固定 // 2. 添加元素,放入末尾 // 3. 移出元素,将最先加入的元素移出 // 4. First In First Out -> FIFO //
阅读全文
摘要:// InsertSort 插入排序 // 思路: // 1. 第一个元素默认是已经排好序的 // 2. 从第二个元素开始,依次比较前面一个元素中,如果小于则交换位置 // 插入排序思路: 将一个元素插入到已经排好序的序列中 // 插入排序对比冒泡排序 // 插入排序是将元素在已经排好序的元素中交换
阅读全文
摘要:// SelectionSort 选择排序 // 思路: // 1. 遍历整个元素集合,将最小值取出追加到一个有序的元组 // 2. 重复遍历剩余元素集合,取出最小值追加到一个有序元组 // 选择排序思维: 从一堆元素中选择几个极端值: 人事选拔 func SelectionSort(data []
阅读全文
摘要:// 对用户密码进行加密 func EncodePwd(pwd string) string { s := sha256.New() s.Write([]byte(pwd)) data := s.Sum(nil) return hex.EncodeToString(data) }
阅读全文
摘要:// GetCode 获取一个随机用户唯一编号 func GetCode(codeLen int) string { // 1. 定义原始字符串 rawStr := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_" /
阅读全文
摘要:package main import "fmt" // 冒泡排序:第一个元素和第二个元素比较值大小,如果第一个元素大于第二个元素则交换位置否则不交换,然后第二个元素与第三个元素比较大小,依次论推 // 思路: // 1. 如果第一个元素大于第二个元素,交换位置 // 2. 对数组进行一次完整交换
阅读全文
摘要:package main import "fmt" // 闭包 // 实现: 在一个函数内部返回一个匿名函数: 1. 在函数内嵌套定义一个函数 2. 然后返回该函数 // 特征: 匿名函数内部可以引用(修改其值+读取其值)外层函数的变量 // 特殊: 按理函数执行完毕(return 或 函数结尾),
阅读全文
摘要:package main import "fmt" // 稀疏数组 // 1. 二维数组 // 2. 存在大量相同相同数据和少量不同数据 // 思维: 将大量相同数据转化为: (数据: 频率 或 位置) 的数据格式以简化稀疏数组的存储 // ValNode 值节点,包含行、列、值 type ValN
阅读全文