![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go/Golang
自不凡
不怕不会,就怕不想
展开
-
RPN(reverse polish notation)-算式表达式求值和表达式的转换
用go实现的后缀表达式求值算法过程原创 2021-12-25 18:13:09 · 445 阅读 · 0 评论 -
Go指针和引用的理解
昨天刷到了一道题,这道题是关于make和new函数的区别。make和new都是go的内建(built-in)函数,作用都是用来给类型T分配内存的:var ptr *int // 虽然定义了一个变量,但它的值不指向任何内存地址ptr = new(int)var foo map[string]intfoo = make(map[string]int)第一行定义了一个指针变量。第二行使用new函数分配内存并返回指针,然后赋值给指针变量ptr。此时ptr的值指向刚分配的内存第三行定义了引用类型为原创 2021-12-03 17:58:15 · 1328 阅读 · 0 评论 -
用Go实现平衡二叉树
小老弟们!我今天继续更新一些内容,是关于平衡二叉树的。其它博客写的都挺好,就是我看不懂,,所以自己来总结下,操原创 2021-11-26 00:13:01 · 316 阅读 · 0 评论 -
Go语言实现堆排序
今天继续更新排序算法,这次要讲的是堆排序,堆看起来像二叉树,表现起来也像二叉树,其实不是的,堆是满足完全二叉树的一维数组。其实可以用二叉树来描述堆排序,但是大家都知道,二叉需要用额外的内存来维护左、右子树的信息,所以用数组无疑是更合适的。堆是一种非线性结构,(本篇随笔主要分析堆的数组实现)可以把堆看作一个数组,也可以被看作一个完全二叉树,通俗来讲堆其实就是利用完全二叉树的结构来维护的一维数组。堆的这种特性非常的有用,堆常常被当做优先队列使用,因为可以快速的访问到“最重要”的元素按照堆的特点可以把堆分为原创 2021-11-23 12:22:45 · 1153 阅读 · 0 评论 -
用Go语言实现插入排序算法
今天继续来写排序算法,这次是插入排序。先了解什么叫插入,书籍中说的是“把一条记录插入到已排好序的有序表中,从而得到一个新的、记录数量增1的有序表”。教科书就是教科书,说话都说的稀里糊涂,怪不得那么多人学校都学不好数据结构和算法这门课。。。垃圾教编。抛开书本,插入排序的重点在于插入,那插入的标准是什么?或者我们应该在什么情况需要把遍历的记录值插入进去?首先,我一次给你一个数字让你按照大小顺序来填入空格,第一次给你一个8,第二次给你一个2,虽然给的顺序是8-2,但你会把2插入到8的前面。也就是说我们从第一张牌原创 2021-11-15 15:05:39 · 701 阅读 · 0 评论 -
用Go语言实现选择排序算法
选择排序的思想是:每一趟从待排序的记录中选出关键字最小的记录,按顺序放在已排序的记录序列的最后,直到全部排完为止。package mainimport fmtfunc main() { var array = [7]int{1,7,4,2,10,5,3} sortBySelect(array) fmt.Println(array)}func sortBySelect(nums []int) { for i := 0; i < len(nums); i++ { k := .原创 2021-11-11 16:34:21 · 715 阅读 · 0 评论 -
用Go语言实现快速排序算法
快速排序(Quick Sort)是由冒泡排序改进得到的。在冒泡排序过程中,只对相邻的两个记录进行比较,因此每次交换两个相邻记录时只能消除一个逆序。如果能通过两个(不相邻)记录的一次交换,消除多个逆序,就能大大加快排序的速度。上面是来自《数据结构与算法》对快速排序的概念定义,其中说过交换两个不相邻可能消除多个逆序,就可以加速排序过程。为什么?举个例子,数组(9, 5 ,1)按小到大进行排序,如果是按照冒泡排序,应该先是9和5交换,形成(5, 9, 1);接着9和1交换,形成(5, 1, 9);最后5和1.原创 2021-11-11 11:59:15 · 761 阅读 · 0 评论