
算法
linkt1234
知易行难,坚定目标,着眼于前面。
展开
-
STL map与Boost unordered_map
今天看到 boost::unordered_map, 它与 stl::map的区别就是,stl::map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树中。所以,如果对map进行遍历(中序遍历)的话,输出的结果是有序的。顺序就是按照operator< 定义的大小排序。而boost::unordered_map是计算元素的Hash值,根据Has转载 2014-08-01 17:04:31 · 419 阅读 · 0 评论 -
Linked List Cycle II
对于判断链表是否有环,方法很简单,用两个指针,一开始都指向头结点,一个是快指针,一次走两步,一个是慢指针,一次只走一步,当两个指针重合时表示存在环了。证明:假设链表有环,环的长度为N,慢指针在起始位置,快指针在位置k(位置从0开始计数),那么快指针只要比慢指针多走经过N-k步,就可以追上慢指针了。。。,因为每一次快指针都比慢指针多走一步,所以一定可以在有限的步数追上慢指针。原创 2014-08-01 12:09:31 · 440 阅读 · 0 评论 -
各种排序算法的比较
1..稳定性比较插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的选择排序、希尔排序、快速排序、堆排序是不稳定的2.时间复杂性比较 平均情况 最好情况 最坏情况归并排序 O(nlogn) O(nlogn) O(nlogn)基数排序 O(n) O(n转载 2014-08-10 15:18:09 · 445 阅读 · 0 评论 -
【分治法】线性时间选择算法
线性时间选择问题:给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,(这里给定的线性集是无序的)。 1、随机划分线性选择 线性时间选择随机划分法可以模仿随机化快速排序算法设计。基本思想是对输入数组进行递归划分,与快速排序不同的是,它只对划分出的子数组之一进行递归处理。 程序清单如下:转载 2014-08-11 12:23:20 · 3253 阅读 · 0 评论 -
算法学习——动态规划
引言前几天,做一道关于,最长不重复字符串的leetcode的题,做完之后对于题目的速度不很满意,所以上网找了相关资料。找到了一种算法,作者自己说是用到了动态规划的算法。我也就顺便把动态规划相关的知识顺便给总结一下 。一.什么是动态规划关于什么是动态规划,引用和总结《算法导论》这本书里面说的,相对于分治法动态规划适用于子问题不是独立的情况,也就是说问题本身包含公共子问题的情况。如果用分治法我们就会做原创 2015-12-12 16:59:34 · 567 阅读 · 0 评论