- 博客(24)
- 资源 (12)
- 收藏
- 关注
原创 位运算在排序与搜索中的应用
问题:假设一个文件中有9亿条不重复的9位整数,现在要求对这个文件进行排序。一般解题思路:1、将数据导入到内存中2、将数据进行排序 (比如插入排序、快速排序)3、将排序好的数据存入文件难题:一个整数为4个字节即使使用数组也需要900,000,000 * 4byte = 3.4G内存对于32位系统,访问2G以上的内存非常困难,而且一般设备也没有这么多的物理内存将数据完全导入到内存中的做法不现实
2008-12-29 15:29:00 852
转载 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
转载 四道微软面试算法题
今天仔细看了一下这四个题目,貌似比较经典,目前只收集到相关的思路和个别题目的解法,不断更新中(1) 一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。 请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。 注意: - 5个数值允许是乱序的。比如: 8 7 5 0 6 - 0可以通配任意数值。比如:8 7 5 0
2008-12-21 14:47:00 862
转载 《C Traps and Pitfalls》
[修订说明] 改正了文中的大部分错别字和格式错误,并对一些句子依照中文的习惯进行了改写。[译序] 那些自认为已经“学完”C语言的人,请你们仔细读阅读这篇文章吧。路还长,很多东西要学。我也是……[概述] C语言像一把雕刻刀,锋利,并且在技师手中非常有用。和任何锋利的工具一样,C会伤到那些不能掌握它的人。本文介绍C语言伤害粗心的人的方法,以及如何避免伤害。[内容]0 简介 1 词法缺
2008-12-20 13:14:00 774
转载 程序员数据结构笔记6
第六天 快考试了,老师没有多说什么,他只是给我们讲了讲近三年试题情况,并详细讲述了两道题目:一道递归,另一道回溯。不过今天不知怎么回事,我感觉特别累,也特别想睡觉。所以没什么感觉。这里就不说了,两道题目都有的,递归那题是2001年最后一题,回溯是在《程序员教程》P416,老师说高程曾经考过,有兴趣自己看看也能看懂的。老师特意为我们出了一份下午试题,我现在把他拿出来让大家参考参考
2008-12-20 11:41:00 590
转载 程序员数据结构笔记4
第四天 枚举: 背包问题: 枚举策略:1)可能的方案:2N 2)对每一方案进行判断. 枚举法一般流程: while(还有其他可能方案) { 按某种顺序可难方案; 检验方案; if(方案为解) 保存方案; } } 枚举策略: 例:把所有排列枚举出来 P6=6!. Min:123456 Max:654321 a
2008-12-20 11:39:00 425
转载 程序员数据结构笔记5
第五天 回溯法: 回溯跟递归都是程序员考试里常出现的问题,大家必须掌握! 回溯法的有关概念: 1) 解答树:叶子结点可能是解,对结点进行后序遍历. 2) 搜索与回溯 五个数中任选三个的解答树(解肯定有三层,至叶子结点): ROOT 虚根 / / | / / 1 2 3 4 5
2008-12-20 11:39:00 434
转载 程序员数据结构笔记3
第三天 排序查找是我自己觉得最头疼的算法了,常搞混去的啊.不知道各位学得如何,如果不错,还请告诉我一些经验!查找 一、 知识点 /静态查找->数组 1、 什么是查找 /动态查找->链树 ●顺序查找,时间复杂度 O(n) ●折半查找:条件:有序;时间复杂度 O(nlog2n) (时间复杂度实际上是查找树的高度) ●索引查找:条件:第I+1块的所有元素都
2008-12-20 11:37:00 474
转载 程序员数据结构笔记2
第二天 转眼又过了一周了,前面一周里面我编了一些程序:链表,长整型数相加,三元组表转置以及一些简单的函数.其实有些算法想想是很简单,不过写起来还是需要一定耐心和C基础的,如果你自己觉得各算法都很懂了,不妨开机编编试试.或许会有一些新的发现与体会.栈和队列 1、知识点: ● 栈的定义:操作受限的线性表 ● 特点:后进先出 ● 栈的存储结构:顺序,链接 / push(s,d)
2008-12-20 11:36:00 584
原创 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 793
转载 在用户空间编程使用linux内核链表list,hlist宏定义和操作
在用户空间编程使用linux内核链表list,hlist宏定义和操作.linux内核中的list_head和hlist_head/hlist_node是将数据结构串起来成为链表的两个重要链表构造工具。利用他们和其对应的宏定义,可以非常容易地将数据构成链表,进行链表的各种操作,和数据查询。在内核中,他们使用的十分广泛。这些链表操作宏定义具有通用性,和具体数据结构无关。利用他们
2008-12-15 16:50:00 1573 1
转载 使用__attribute__处理对齐问题
GNU C扩展的__attribute__ 机制被用来设置函数、变量、类型的属性,其用得较多的是处理字节对齐的问题。__attribute__ 的语法为:[code]__attribute__ ((语法列表))[/code]参数aligned(number) [number为最小对齐的字节数]是用得较多的一个。另一个是参数packed 表示“使用最小对齐”方式,即对变量是字节对齐,对于
2008-12-14 16:22:00 929 1
转载 va_list可变参数传递
va_list(),va_start()是何意?(一)写一个简单的可变参数的C函数 下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的 C函数要在程序中用到以下这些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void v
2008-12-12 13:14:00 1353
转载 (经典)C语言测试:想成为嵌入式程序员应知道的0x10个基本问题
C语言测试:想C语言测试:想成为嵌入式程序员应知道的0x10个基本问题C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不
2008-12-07 21:03:00 665 1
转载 GNU C 扩展之__attribute__ 机制简介
摘要: 在学习linux内核代码及一些开源软件的源码(如:DirectFB),经常可以看到有关__attribute__的相关使用。本文结合自己的学习经历,较为详细的介绍了__attribute__相关语法及其使用。GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Vari
2008-12-06 14:07:00 440
转载 [精华] gcc核心扩展[水木清华转贴]
this part is closely related to compiler of c , especially GCC(GNU C Complier), so count !!![水木清华转贴]如有错误或遗漏,欢迎指正。 ===========================Linux 内核使用的 GNU C 扩展===========================
2008-12-06 12:07:00 518
转载 double linked list of kernel
**************************************************-------------双向循环链表---------------------------来源于:list.h设计思想:尽可能的代码重用,化大堆的链表设计为单个链表。链表的构造:如果需要构造某类对象的特定列表,则在其结构中定义一个类型为list_head指针的成员,通过这个成员将这
2008-12-05 23:28:00 736
转载 利用udev在/dev下动态生成/移除设备文件
利用udev在/dev下动态生成/移除设备文件用udev在/dev/下动态生成设备文件,这样用户就不用手工调用mknod了。利用的kernel API: class_create : 创建class class_destroy : 销毁class class_device_create :
2008-12-05 23:19:00 457
转载 我理解的逻辑地址、线性地址、物理地址和虚拟地址(补充完整了) referenced by 独孤九贱
this articl s referenced by 独孤九贱, thanks for him sincerely !一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到
2008-12-05 14:31:00 665
转载 奥巴马获胜的秘密武器--“长尾效应”
无可否认,奥巴马的个人魅力和语言艺术已经让美国人,特别是年轻人疯狂。除此以外,他之所以能够获胜,和“长尾效应”不无关系。 通过互联网,奥巴马建立了庞大的草根性筹款网络,获得了大量政治献金(奥巴马累计筹款超过2.33亿美元,其中大量款额是来自互联网中200美元以下的小额捐款)。另外,拉近其与普通公众特别是年轻人的距离(调查显示,在30岁以下的选民中,奥巴马赢得了2/3的支持率,而麦凯
2008-12-05 11:34:00 676
原创 analysis of activate_task() involed in try_to_wakeup()
唤醒操作通过函数wake_up进行,它会唤醒指定的等待队列上的所有进程。它调用函数try_to_wake_up,该函数负责将进程设置为TASK_RUNNING状态,调用activate_task将此进程放入可执行队列,如果被唤醒的进程优先级比当前正在运行的进程的优先级高,还有设置need_resched标志。通常哪段代码促使等待条件达成,它就负责随后调用wake_up()函数。
2008-12-04 21:01:00 1094
原创 analysis of wake_up_interruptible()
#define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)void fastcall __wake_up(wait_queue_head_t *q, unsigned int mo
2008-12-01 14:06:00 2599 1
原创 analysis of wait_event_interruptible()
1 realted structures Linux-2.6提供如下关于等待队列的操作: (1) 定义"等待队列头", wait_queue_head_t my_queue;defined in linux/wait.h 50 struct __wait_queue_head { 51 spinlock_t lock; 52
2008-12-01 10:53:00 2727 2
原创 linux wait queue
在Linux驱动程序中,可以使用等待队列(waitqueue)来实现阻塞进程的唤醒。waitqueue很早就作为一种基本的功能单位出现在Linux内核里了,它以队列位基础数据结构,与进程调度机制紧密结合,能够用于实现内核中异步事件通知机制。等待队列可以用来同步对系统资源的访问。(信号量在内核中也依赖等待队列来实现)。 Linux-2.6提供如下关于等待队列的操作:
2008-12-01 09:46:00 5095
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人