![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
数据结构是基础,算法是效率。二者缺一不可。
水番丘山
最美的架构不是设计好的,而是不断演变进化而来。
展开
-
算法基础(golang版本)——冒泡排序
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 一。算法演绎步骤 1.两个循环,外循环以及内循环。 2.外循环每偏移一个元素就将此元素与内循环的每一个元素进行对比,如果比其大,那就交换位置,直到没有比此元素更大的为止。然后进入下一个循环,直到遍历完所有的元素。 我们按.原创 2020-08-08 22:15:10 · 207 阅读 · 0 评论 -
算法基础(golang版本)——插入排序
插入排序,顾名思义就是利用插入的方式进行排序,他的演绎过程就好比斗地主的时候摸牌的过程。假设我们手上有2,3,5,10这4张牌,这时候从牌桌里摸上一张7,这时候为了插入到合适的位置一般会从右边开始进行对比,例如10大于7那么,7应该往左偏移进行比较,然后再看5小于7,那么7就应该放在5的右边,这时候7就插入到下标为3的位置,同时10往右挪一个位置。这就是插入排序的演绎过程。 一。基于以上演绎过程,我们用golang来进行实现: func insertion(data []int) { for j :=.原创 2020-08-05 23:36:33 · 612 阅读 · 0 评论 -
golang解决约瑟夫问题,单向循环链表实现
据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最.原创 2020-07-31 22:02:15 · 349 阅读 · 0 评论