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

随笔分类 -  C语言

摘要:本文摘抄自“跟我一起写Makefile ”,只是原文中我自己感觉比较精要的一部分,并且只针对C语言,使用GCC编译器。 原文请看这里:http://wiki.ubuntu.org.cn/%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile 写完之后才发现基本上都是一些比较枯燥的规则,看看一、二、八三个部分就可以了。当作参考工具吧,什么时候用到... 阅读全文

posted @ 2011-04-14 17:02 天地玄黄 阅读(13528) 评论(0) 推荐(1)

摘要:在Linux下编写C程序的时候,总是看见 #include <sys/types.h> 这样的引用。那么sys/types.h在哪里呢? 一般在/usr/include这个目录下。这是gcc的默认头文件目录 阅读全文

posted @ 2011-04-07 09:36 天地玄黄 阅读(6630) 评论(0) 推荐(0)

摘要:在Linux中,gcc更像一个工具大管家,管理很多工具一起来对C程序进行编译。详细过程请看下图,带阴影的箭头表示文件的流程,空白箭头表示控制过程: 下面详细介绍一下这个过程。 1、程序员在Linux终端中输入命令gcc eatc.c –o eatc 2、gcc接管Linux的控制权,然后立即启用一个工具C preprocessor(cpp)。这个工具处理C语言的源代码文件(eatc.c),处理比... 阅读全文

posted @ 2011-03-30 21:25 天地玄黄 阅读(4737) 评论(0) 推荐(0)

摘要:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://vanshell.blog.51cto.com/890307/417068 我相信学过C语言的同学,都会在书中看到C语言特点一定有:可移植性。但是什么是可移植?如何才能可移植?C语言是如何做到可移植的?对于初学者,可移植可能是一个经常遇到却很神秘的词。我想通过这篇文章来表达我对于... 阅读全文

posted @ 2011-03-27 17:02 天地玄黄 阅读(1189) 评论(0) 推荐(1)

摘要:把整个矩阵按sqrt(n)为一块,分成n/sqrt(n)块,在查询的时候就按照小块进行分割。边缘部分按照顺时针分成相同的小条。 代码如下: /*The solution of RMQ using a <O(n), O(sqrt(n))> algrithom *http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=lowestCommonA... 阅读全文

posted @ 2011-03-09 14:19 天地玄黄 阅读(313) 评论(0) 推荐(0)

摘要:预处理时间复杂度为 O(NlogN),查找时间复杂度为 O(1) /*The RMQ question, using Sparse Table(ST) algorithm to solve it *http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=lowestCommonAncestor * *initRMQ: M[N][logN][... 阅读全文

posted @ 2011-03-08 20:48 天地玄黄 阅读(467) 评论(0) 推荐(0)

摘要:在老版本的Windows开机的时候,可以注意到左下角有一个‘|’逐渐变成‘/’,又逐渐变成‘-’,再变成‘\’,再依次变换。这里就实现这个程序相似的程序。只不过是显示字母,a显示完之后消失,接着在原地方显示b,依次类推。 这个程序最主要使用ASCII字符中的第8号字符:backspace,它使输出的光标后退一位。 这个程序最主要的一行代码为: #define BACKSPACE printf("%... 阅读全文

posted @ 2011-03-03 17:02 天地玄黄 阅读(362) 评论(0) 推荐(0)

摘要:快速排序: 其思想为:在一个序列中,我们指定一个数(比如a[0]),然后查看整个数列,让比a[0]小的数都放到a[0]之前,比a[0]大的数都放到a[0]之后,那么a[0]所在的位置就是排好序后它应该待的位置。然后我们再对这个处理过的数列的前半部分用快速排序的方法排序,对后半部分用快速排序的算法进行排序,这样整个数列就排好序了。 Base Case:如果被a[0]分成的两部分只有一个元素或者没有元... 阅读全文

posted @ 2011-01-10 15:01 天地玄黄 阅读(2937) 评论(1) 推荐(1)

摘要:插入排序: 时间复杂度为Θ(n2) 阅读全文

posted @ 2011-01-09 16:57 天地玄黄 阅读(643) 评论(0) 推荐(0)

摘要:在Linux下实现了一个归并排序的算法,分成多个文件,这里记录三点:归并排序的算法、makefile的使用、gdb调试心得 一、归并排序算法 算法的递推关系:一个大的数列需要排序,把它从中间分成两部分,每一部分归并排序,然后把排好序的这两个部分再合并起来(合并的时候要按顺序合并)。 算法的Base Case:如果分成的这部分只有一个数,那么这个部分就不用再排序(看做已经排好序的)。 实现这个算法用了三个函数,每个函数在一个文件中,分别为:merge.c sort.c 和 main.c,其中merge.c实现的是合并的方法,sort.c实现的是排序的方法,main.c是一个测试实例。还有三 阅读全文

posted @ 2011-01-08 22:04 天地玄黄 阅读(17348) 评论(0) 推荐(0)

摘要:几种常见的时间复杂度函数按数量级从小到大的顺序依次是: Θ(lgn),Θ(sqrt(n)),Θ(n),Θ(nlgn),Θ(n2),Θ(n3),Θ(2n),Θ(n!) 其中,lgn通常表示以10为底n的对数,但是对于Θ-notation来说,Θ(lgn)和Θ(log2n)并无区别 阅读全文

posted @ 2011-01-07 16:31 天地玄黄 阅读(241) 评论(0) 推荐(0)

摘要:这是我自己写的一个插入排序的算法,main函数是测试用的,insertion_sort()函数就是插入排序的算法: 看了一下网上的源码,又有了一些改进,让代码更加紧凑。不过算法还是不是很明晰,看来需要专门学习一下算法了。 阅读全文

posted @ 2011-01-07 14:21 天地玄黄 阅读(446) 评论(0) 推荐(0)