【算】链表反转

2018-12-16
阅读 2 分钟
3.4k
最近研究算法,遇到的一道很有意思的问题——怎么把一个链表反转?很容易想到一个方法:遍历链表,数组作栈存储路径,元素逐个出栈得到的就是反转后的链表!查找资料发现,有更好的方式实现。

【算】计数排序和桶排序

2018-04-23
阅读 10 分钟
3.7k
我们对15个10以内(0-10)的数字按从小到大的顺序进行排序,比如source = [6, 8, 6, 2, 2, 10, 8, 5, 1, 9, 6, 4, 0, 2, 7],计数排序是这么运作的。

【算】最短路径问题

2018-04-13
阅读 4 分钟
3.8k
a、b、c、d、e、f、g是七个城镇,它们之间的连线表示汽车行驶路线,而连线上的箭头表示道路允许方向。(比如,a和c之间,箭头由a指向c,表示可以开车从a行驶到c;反之,从c直接行驶到a是不行的)问题,找出一条从A镇到G镇途径镇子最少的路线。

【算】从散列表到HashMap

2018-04-03
阅读 3 分钟
3.1k
我们要在数组中查找一个值,比如红框圈中的 元素5 ,可以通过遍历或者排序后二分的方式达到目的。没有更快捷的查找方式了吗?显然是有的,比如Map。我们对存 / 取动一动脑筋,还是上图的那些元素,假如我们这样存:

【算】快速排序

2018-03-20
阅读 3 分钟
2k
分治 快速排序(以下简称“快排”)的核心思想是分治法。可以说,分治提供了另一种解决问题的思路。举个例子来进行说明,抓稳扶好,直接开车了…… 举例 现有一个集合{4,8,2,5,7,-1,3},我们将对它进行从小到大排序: 1.选取第一个元素4作为基准值,后面的元素逐个和这个基准值比较大小 显然,要么大于,要么小于( 暂不考虑...

【算】选择排序和二分查找

2018-03-18
阅读 4 分钟
2.9k
序 大概半个月前,偶尔看到《算法图解》,没翻几页便被数学战五渣的我奉为神书,怎一个相见恨晚、爱不释手加老泪纵横啊!遂写文以作积累…… 选择排序 思路 选择排序的思路很好理解,以从小到大排序为例: 选出集合中最小的元素,置于目标集合第一个位置 重复上述过程,剩余元素中选出最小的元素,置于目标集合第二个位置…...