quark

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  Algorithm

摘要:算法实现比较简单,但算法原理不明白,有空了再研究一下。 unsigned LevenshteinDistance(const string& s1, const string& s2) { if (s1.empty()) { return (unsigned)s2.size(); } if (s2.empty()) { return... 阅读全文
posted @ 2017-08-09 17:02 QuarkZ 阅读(512) 评论(0) 推荐(0) 编辑

摘要:题目 你知道的。 分析 分析不来。 代码 void OutputArray(int* pArr, int iLen){ for (int i = 0; i = iPatternLen) return targetIndex - iPatternLen; else return -1;}void GetNextValue2(char const* szPatt... 阅读全文
posted @ 2014-04-17 17:49 QuarkZ 阅读(244) 评论(0) 推荐(0) 编辑

摘要:题目 // 3.求子数组的最大和// 题目:// 输入一个整形数组,数组里有正数也有负数。// 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。// 求所有子数组的和的最大值。要求时间复杂度为O(n)。// // 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,// 因此输出为该子数组的和18。分析还是递归的思路... 阅读全文
posted @ 2014-04-16 11:58 QuarkZ 阅读(218) 评论(0) 推荐(0) 编辑

摘要:算法题目链接:http://bbs.csdn.net/topics/350093707题目// 1.把二元查找树转变成排序的双向链表// 题目:// 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。// 要求不能创建任何新的结点,只调整指针的指向。// // ... 阅读全文
posted @ 2014-04-16 10:56 QuarkZ 阅读(217) 评论(0) 推荐(0) 编辑

摘要: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_ 阅读全文
posted @ 2012-03-19 16:40 QuarkZ 阅读(3746) 评论(1) 推荐(1) 编辑

摘要:ConcurrentQueue<T>队列是一个高效的线程安全的队列,是.Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数据结构。ConcurrentQueue<T>数据结构下图是ConcurrentQueue<T>数据结构的示意图:ConcurrentQueue<T>队列由若干Segment动态构成,每个Segment是一块连续的内存Buffer,大小固定为SEGMENT_SIZE。ConcurrentQueue<T>私有成员变量ConcurrentQueue<T& 阅读全文
posted @ 2012-03-19 14:09 QuarkZ 阅读(44462) 评论(3) 推荐(3) 编辑

摘要:最近,在编写自己呃数独游戏过程中,遇到需要生成一些随机但连续的数字序列的需求。当时,为了尽快实现功能,临时写了一个凑合着用。现在有时间,写一个通用的,生成随机但连续数的序列的函数,当然原理很简单。// 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 阅读全文
posted @ 2012-02-22 15:48 QuarkZ 阅读(556) 评论(0) 推荐(0) 编辑

摘要:我有如下三行代码: 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 ... 阅读全文
posted @ 2011-11-30 11:12 QuarkZ 阅读(2768) 评论(8) 推荐(0) 编辑

摘要:.NET4.0 + MemoryMapping + ReadByte()该方法的思路主要是通过内存映射的原理,访问文件内容,由于在.net环境下不能一次性映射太大的文件,所以仍然采用分块映射的方式:主要代码如下: /// <summary> /// MemoryMapping + ReadByte() /// </summary> unsafe static void CalulateLine_MemoryMapping_ReadByte(uint oneBlockSize) { const strin... 阅读全文
posted @ 2011-01-24 16:33 QuarkZ 阅读(554) 评论(0) 推荐(0) 编辑

摘要:最近在和一个朋友的交流中,遇到这么一个问题,如何能较快对一个较大的文本文件(1G或更大)的文本行数进行统计。如果不考虑效率,要统计一个文本的行数其实一点也不难,但是如果需要在较快的时间内做完,恐怕就得考虑实现方法了。为此,自己尝试了几种方法,在这里把这几种方法拿出来和大家讨论一下。首先是生成测试数据的代码: const int COL_NUM = 30; const int LINE_NUM = 10000000; const string FILE_NAME = @"d:\test.csv"; /// <summary> ... 阅读全文
posted @ 2011-01-21 14:20 QuarkZ 阅读(2062) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示