摘要:算法实现比较简单,但算法原理不明白,有空了再研究一下。 unsigned LevenshteinDistance(const string& s1, const string& s2) { if (s1.empty()) { return (unsigned)s2.size(); } if (s2.empty()) { return...
阅读全文
随笔分类 - Algorithm
摘要:题目 你知道的。 分析 分析不来。 代码 void OutputArray(int* pArr, int iLen){ for (int i = 0; i = iPatternLen) return targetIndex - iPatternLen; else return -1;}void GetNextValue2(char const* szPatt...
阅读全文
摘要:题目 // 3.求子数组的最大和// 题目:// 输入一个整形数组,数组里有正数也有负数。// 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。// 求所有子数组的和的最大值。要求时间复杂度为O(n)。// // 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,// 因此输出为该子数组的和18。分析还是递归的思路...
阅读全文
摘要:算法题目链接:http://bbs.csdn.net/topics/350093707题目// 1.把二元查找树转变成排序的双向链表// 题目:// 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。// 要求不能创建任何新的结点,只调整指针的指向。// // ...
阅读全文
摘要:Segment类Segment成员变量 long long m_index;记录该segment的索引号。 int* volatile m_state;状态数组,标识所对应的元素节点的状态,默认值为0,如果该元素节点添加了值,则标记为1。 T* volatile m_array;队列元素存储空间的指针。 Segment* volatile m_next;指向下一个segment的指针。 volatile long m_high;标识在当前segment,元素最后添加的索引值,初始值为-1,如果该segment被填满了,则该值为SEGMENT_SIZE – 1。 volatile long m_
阅读全文
摘要:ConcurrentQueue<T>队列是一个高效的线程安全的队列,是.Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数据结构。ConcurrentQueue<T>数据结构下图是ConcurrentQueue<T>数据结构的示意图:ConcurrentQueue<T>队列由若干Segment动态构成,每个Segment是一块连续的内存Buffer,大小固定为SEGMENT_SIZE。ConcurrentQueue<T>私有成员变量ConcurrentQueue<T&
阅读全文
摘要:最近,在编写自己呃数独游戏过程中,遇到需要生成一些随机但连续的数字序列的需求。当时,为了尽快实现功能,临时写了一个凑合着用。现在有时间,写一个通用的,生成随机但连续数的序列的函数,当然原理很简单。// generate a random number list length of which is size;// the range of numbers is 0 to size-1;bool CreateRandomSequenceNumbers(int size, int* randomSequence){ if ( size <= 0 || (randomSequence == N
阅读全文
摘要:我有如下三行代码: int a = 8; int ret = a/2; ret = a >> 1;现在讨论上面两种实现除以2方式的性能,我们有如下伪汇编代码: int a = 8;013B143E mov dword ptr [a],8 \\ 将8赋值为变量a int ret = a/2;013B1445 mov eax,dword ptr [a] \\ 将a的值赋值给eax013B1448 cdq \\ 双字转换为4 字(把EAX 中的字的符号扩展到EDX 中去)013B1449 sub eax,edx ...
阅读全文
摘要:.NET4.0 + MemoryMapping + ReadByte()该方法的思路主要是通过内存映射的原理,访问文件内容,由于在.net环境下不能一次性映射太大的文件,所以仍然采用分块映射的方式:主要代码如下: /// <summary> /// MemoryMapping + ReadByte() /// </summary> unsafe static void CalulateLine_MemoryMapping_ReadByte(uint oneBlockSize) { const strin...
阅读全文
摘要:最近在和一个朋友的交流中,遇到这么一个问题,如何能较快对一个较大的文本文件(1G或更大)的文本行数进行统计。如果不考虑效率,要统计一个文本的行数其实一点也不难,但是如果需要在较快的时间内做完,恐怕就得考虑实现方法了。为此,自己尝试了几种方法,在这里把这几种方法拿出来和大家讨论一下。首先是生成测试数据的代码: const int COL_NUM = 30; const int LINE_NUM = 10000000; const string FILE_NAME = @"d:\test.csv"; /// <summary> ...
阅读全文