- 博客(7)
- 收藏
- 关注
原创 glibc的qsort迭代实现源码
一些通用函数的源码可谓是把性能的优化做到极致,尽管很多时候我们为了可读性不会这样子做,但是某些时候说不定还能用的上,看一下,学学也无妨。 快速排序是一个比较常用到的排序方法,虽然很多时候是被乱用的......平时实现的时候,很多人为了简单,都会用递归实现。看了一下glibc的源码,果然是用迭代实现的,毕竟相对递归,迭代要高效得多。下面将对代码进行解释,一是学一下大神的写法,而是学一
2014-03-24 20:55:30
895
原创 C语言除法向上、向下取整
C语言的math.h头文件中有ceil和floor两个函数: double ceil(double x);float ceilf(float x);long double ceill(long double x);double floor(double x);float floorf(float x);long double floorl(long dou
2014-03-24 20:55:28
2599
原创 CentOS获取软件安装包源码
用Linux的一大好处就是很多软件都是开源的,可以轻松地获得它们的源代码。阅读优秀的源代码是程序员进步的一个很好的途径。下面就介绍一下如何获取CentOS下常用工具的源码。 CentOS、RedHat、Fedora这样系列的操作系统有一个yumdownloader的工具,可以下载安装包及其源码,例如: yumdownloader --source kernel
2014-03-24 20:55:26
599
原创 全排列实现
n 个元素的全排列有 n! 个,相信学过概率的都知道。n = 2, 3, 4 的时候,就有 2, 6, 24个,还可以列出来。再往上,想全部直接列出来就有点难度了。如果交给计算机去做,计算机又该按照何种规则去列出这些组合呢? 我的第一想法是先从 n 个元素中拿出一个,放到目标数组的第一位生成 n 个数组,然后再从剩下的 n - 1 个元素中取出一个放到这 n 个数组的第二位 生成
2014-03-21 20:28:26
1073
原创 C/C++结构体的存储分配
结构体的大小怎么计算,在一个整型占4个字节,字符型占1个字节的机器里,一个包含一个整型、两个字符型的结构体类型占的空间有多大?4+2*1=6?看看下面这段代码,你知道它的打印结果(整型4个字节,字符1个字节)?#includestruct{ int a; char b; char c;}A;struct{ char b; int a; char c;}B;struct{ int a; char b; char c; char
2011-05-02 15:48:00
659
原创 质数筛选法和C返回一个数组
从函数获得一个数组,C有很多方法,这里列举两种方法,都是从函数返回一个参数。具体做法看程序,注释挺详细的: 方法一:/*------primer.c-------*/#include#include/*C没有bool类型,GCC不加进去,我也没办法,在VC下,把下面三句删了吧*/#define bool int#define false 0#define true 1/*C返回一个数组,方法一,返回一个数组指针。*网上和很多书上都是这个方法,看起来会有点难懂。
2011-05-02 13:32:00
597
原创 复习数据结构---纯C编译栈及栈应用(迷宫)
这几天装了Ubuntu11.04,想试一下GCC编译C,以前也没试过在GCC编译一个像样的C程序。所以也挑了比较简单的栈来实现一下,在纯C的环境下编译,发现自己的问题还真是挺多的: 1. C没有bool这种类型,false和true不是C的关键字。在VC里面就是,那是VC自己加上去的。。。 2. 没有养成好习惯啊,指针、栈没有初始化就用。结果编译总是出现段错误,这是个悲剧,是数组越界还是非法使用指针抑或是指针没初始化?检查大半天,结果是没有初始化!! 3. 不得不说,指针还不能灵活
2011-05-02 11:11:00
688
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人