算法
书生_AABB
每天进步一点点!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
归并排序(golang实现)
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。具体实现示意图:效果图:代码package mainimport "fmt"func main() { arr := []int{8, ...原创 2018-09-29 10:45:36 · 5350 阅读 · 9 评论 -
希尔排序(golang实现)
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位希尔排序通过将比较的全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置前进...原创 2018-09-28 16:36:52 · 2235 阅读 · 0 评论 -
选择排序法(golang实现)
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其...原创 2018-09-28 11:02:47 · 973 阅读 · 0 评论 -
插入排序(golang实现)
插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序 取出下一个元素在已经排序的元素序列中从后向前扫描在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位置重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置后重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 将新元素插...原创 2018-09-27 18:27:47 · 547 阅读 · 0 评论 -
冒泡排序(golang实现)
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。 走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。package mainimport "fmt"func main() { arr := []int{...原创 2018-09-27 16:04:07 · 1117 阅读 · 0 评论 -
快速排序法(golang实现)
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。原创 2018-09-26 18:33:09 · 5806 阅读 · 0 评论 -
记录学到的一些简单算法(golang实现,不定期更新)
1.取余取余常用于判断整数的奇偶性,但其实判断奇偶性可以用&,没必要用取余操作 var num = 17 if (num & 1) == 1 { fmt.Println("奇数") } else { fmt.Println("偶数") }一次循环遍历二维数组:遍历二维数组通原创 2018-09-21 16:26:36 · 634 阅读 · 0 评论
分享