排序算法
自不凡
不怕不会,就怕不想
展开
-
Go语言实现堆排序
今天继续更新排序算法,这次要讲的是堆排序,堆看起来像二叉树,表现起来也像二叉树,其实不是的,堆是满足完全二叉树的一维数组。其实可以用二叉树来描述堆排序,但是大家都知道,二叉需要用额外的内存来维护左、右子树的信息,所以用数组无疑是更合适的。堆是一种非线性结构,(本篇随笔主要分析堆的数组实现)可以把堆看作一个数组,也可以被看作一个完全二叉树,通俗来讲堆其实就是利用完全二叉树的结构来维护的一维数组。堆的这种特性非常的有用,堆常常被当做优先队列使用,因为可以快速的访问到“最重要”的元素按照堆的特点可以把堆分为原创 2021-11-23 12:22:45 · 1178 阅读 · 0 评论 -
用Go语言实现插入排序算法
今天继续来写排序算法,这次是插入排序。先了解什么叫插入,书籍中说的是“把一条记录插入到已排好序的有序表中,从而得到一个新的、记录数量增1的有序表”。教科书就是教科书,说话都说的稀里糊涂,怪不得那么多人学校都学不好数据结构和算法这门课。。。垃圾教编。抛开书本,插入排序的重点在于插入,那插入的标准是什么?或者我们应该在什么情况需要把遍历的记录值插入进去?首先,我一次给你一个数字让你按照大小顺序来填入空格,第一次给你一个8,第二次给你一个2,虽然给的顺序是8-2,但你会把2插入到8的前面。也就是说我们从第一张牌原创 2021-11-15 15:05:39 · 714 阅读 · 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 · 722 阅读 · 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 · 776 阅读 · 0 评论