文章分类 -  算法

摘要:一个快指针(慢指针的两倍),一个慢指针,如果有循环必定相遇。 假设起点到循环点长度为a,相遇点到循环点长度为b,循环剩下长度为c。 则很容易得到: 2*(a+b)==a+b+n*(b+c); 变形得: a=(n-1)*(b+c)+c; 可以得出,再次另一个指针指向链表头,和相遇点指针同速前进,必定在 阅读全文
posted @ 2018-03-29 14:37 eel808 阅读(389) 评论(0) 推荐(0)
摘要:假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。 让第一个数6作为基准数,接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数放在6的左边。 分别从初始序列“6 1 2 7 9 3 4 5 10 8”两端开始“探测”。 先从右往左找一个小于6的数,再 阅读全文
posted @ 2018-03-15 20:56 eel808 阅读(491) 评论(0) 推荐(0)
摘要:我们用个简单的例子来看看这是什么意思: 通过此图你可以看到,在 2 个 4元素序列里你只需要迭代一次,就能构建最终的8元素已排序序列,因为两个4元素序列已经排好序了: 1) 在两个序列中,比较当前元素(当前=头一次出现的第一个) 2) 然后取出最小的元素放进8元素序列中 3) 找到(两个)序列的下一 阅读全文
posted @ 2018-03-09 21:03 eel808 阅读(965) 评论(0) 推荐(0)
摘要:作者: dreamcatcher-cx 出处: <http://www.cnblogs.com/chengxiao/> 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在页面明显位置给出原文链接。 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔 阅读全文
posted @ 2018-03-08 19:54 eel808 阅读(123) 评论(0) 推荐(0)