algorhithm analysis
thewayma
这个作者很懒,什么都没留下…
展开
-
位运算在排序与搜索中的应用
问题:假设一个文件中有9亿条不重复的9位整数,现在要求对这个文件进行排序。一般解题思路:1、将数据导入到内存中2、将数据进行排序 (比如插入排序、快速排序)3、将排序好的数据存入文件难题:一个整数为4个字节即使使用数组也需要900,000,000 * 4byte = 3.4G内存对于32位系统,访问2G以上的内存非常困难,而且一般设备也没有这么多的物理内存将数据完全导入到内存中的做法不现实原创 2008-12-29 15:29:00 · 852 阅读 · 0 评论 -
cli/sti 用法
cli 禁止中断发生sti 允许中断发生在对 ss 和sp操作的时候, 如果有中断发生,中断的保存现场的操作是将相关寄存器值保存到ss:sp指向的地址.如果ss 或者sp没有完成赋值操作, 这时候ss:sp指向的地址则是不期望的地方. 如果将系统或者其他应用的数据覆盖,会导致系统/应用崩溃. 下面是两条规则: 1)在改变ss:sp之前,必须用cli指令屏蔽中转载 2009-09-28 19:26:00 · 1242 阅读 · 0 评论 -
C语言常用宏定义技巧(转)
1、防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H //头文件内容#endif2、重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedef unsigned char boolean; /* Boolean value type. */typedef unsigned long int ui转载 2008-12-28 21:45:00 · 732 阅读 · 0 评论 -
《C Traps and Pitfalls》
[修订说明] 改正了文中的大部分错别字和格式错误,并对一些句子依照中文的习惯进行了改写。[译序] 那些自认为已经“学完”C语言的人,请你们仔细读阅读这篇文章吧。路还长,很多东西要学。我也是……[概述] C语言像一把雕刻刀,锋利,并且在技师手中非常有用。和任何锋利的工具一样,C会伤到那些不能掌握它的人。本文介绍C语言伤害粗心的人的方法,以及如何避免伤害。[内容]0 简介 1 词法缺转载 2008-12-20 13:14:00 · 775 阅读 · 0 评论 -
程序员数据结构笔记6
第六天 快考试了,老师没有多说什么,他只是给我们讲了讲近三年试题情况,并详细讲述了两道题目:一道递归,另一道回溯。不过今天不知怎么回事,我感觉特别累,也特别想睡觉。所以没什么感觉。这里就不说了,两道题目都有的,递归那题是2001年最后一题,回溯是在《程序员教程》P416,老师说高程曾经考过,有兴趣自己看看也能看懂的。老师特意为我们出了一份下午试题,我现在把他拿出来让大家参考参考转载 2008-12-20 11:41:00 · 591 阅读 · 0 评论 -
程序员数据结构笔记5
第五天 回溯法: 回溯跟递归都是程序员考试里常出现的问题,大家必须掌握! 回溯法的有关概念: 1) 解答树:叶子结点可能是解,对结点进行后序遍历. 2) 搜索与回溯 五个数中任选三个的解答树(解肯定有三层,至叶子结点): ROOT 虚根 / / | / / 1 2 3 4 5转载 2008-12-20 11:39:00 · 434 阅读 · 0 评论 -
程序员数据结构笔记3
第三天 排序查找是我自己觉得最头疼的算法了,常搞混去的啊.不知道各位学得如何,如果不错,还请告诉我一些经验!查找 一、 知识点 /静态查找->数组 1、 什么是查找 /动态查找->链树 ●顺序查找,时间复杂度 O(n) ●折半查找:条件:有序;时间复杂度 O(nlog2n) (时间复杂度实际上是查找树的高度) ●索引查找:条件:第I+1块的所有元素都转载 2008-12-20 11:37:00 · 474 阅读 · 0 评论 -
程序员数据结构笔记2
第二天 转眼又过了一周了,前面一周里面我编了一些程序:链表,长整型数相加,三元组表转置以及一些简单的函数.其实有些算法想想是很简单,不过写起来还是需要一定耐心和C基础的,如果你自己觉得各算法都很懂了,不妨开机编编试试.或许会有一些新的发现与体会.栈和队列 1、知识点: ● 栈的定义:操作受限的线性表 ● 特点:后进先出 ● 栈的存储结构:顺序,链接 / push(s,d)转载 2008-12-20 11:36:00 · 585 阅读 · 0 评论 -
四道微软面试算法题
今天仔细看了一下这四个题目,貌似比较经典,目前只收集到相关的思路和个别题目的解法,不断更新中(1) 一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。 请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。 注意: - 5个数值允许是乱序的。比如: 8 7 5 0 6 - 0可以通配任意数值。比如:8 7 5 0转载 2008-12-21 14:47:00 · 862 阅读 · 0 评论 -
程序员数据结构笔记4
第四天 枚举: 背包问题: 枚举策略:1)可能的方案:2N 2)对每一方案进行判断. 枚举法一般流程: while(还有其他可能方案) { 按某种顺序可难方案; 检验方案; if(方案为解) 保存方案; } } 枚举策略: 例:把所有排列枚举出来 P6=6!. Min:123456 Max:654321 a转载 2008-12-20 11:39:00 · 426 阅读 · 0 评论 -
LCS 两个字符串的最大公共子字符串
the stupid method is to loop over each characters , source code:#include #include #include //LCS , loop over chacracter//time complexity is o(n*m), where n m is the length of two stringschar *maxsubst原创 2008-12-19 15:20:00 · 794 阅读 · 0 评论 -
binary search tree
Binary Search Treeregarding with the action : search , search_min , search_max ,search_predecessor , search_successor.Data structure of the treestruct tree_node{ unsigned int data;原创 2009-10-11 17:26:00 · 639 阅读 · 0 评论