代码改变世界

随笔档案-2012年10月

快速排序 Gnu glibc qsort_r

2012-10-22 19:00 by respawn, 4232 阅读, 收藏,
摘要: 今天,又重新看了一下GLIBC中快速排序的源码~ 又多了一些不同的理解,为什么这篇文章迟迟没有发布,也是因为对于源码没有深刻的理解,感觉很多点都不明白.今天就找了些资料,仔细揣摩了一遍源码,索性就写出来,有不到之处,请批评指正~之前一直都是以为GLIBC中的源码应该会花费大量的代码做通用处理,但是今天重新浏览之后,发现自己错了,哎~ 不过还是蛮高兴的,毕竟还年轻嘛~其实,GLIBC中快速排序的源码重点在榨取CPU的性能,提高快排的执行效率.为什么说是榨取呢? 因为源码真的将利用效率做到了极致.1 /* For large object sizes use indirect sorting... 阅读全文

快速排序 Gnu glibc qsort

2012-10-13 16:31 by respawn, 3347 阅读, 收藏,
摘要: 文笔不好,想不了太好的标题,所以就简单的将关键字列出来作为标题.先从一个小例子开始,这个例子是使用C library中的qsort函数完成一个数组的排序:/* qsort example */#include #include int values[] = { 40, 10, 100, 90, 20, 25 };int compare (const void * a, const void * b){ return ( *(int*)a - *(int*)b );}int main (){ int n; qsort (values, 6, sizeof(int), compare); ... 阅读全文

快速排序

2012-10-09 09:53 by respawn, 4557 阅读, 收藏,
摘要: 昨天通宵,早上四点的时候就开始写博客.结果五点的时候电脑罢工,自动重启.我写的东西也就都没有了,都怪自己平时没有保存的习惯。下次一定要注意,要养成保存的习惯,要不然再发生这样的情况,那就只能笑话自己还是个马马虎虎的小孩子了.刚才自己列了一下文章中需要讲到的部分,很庆幸,今天的状态还不错,自己还是很满意的.说到排序算法,首先来搞清楚一个问题,内排序和外排序指的是什么?要想解释这个问题,需要将内排序和外排序比较区分.内排序: 需要比较的数据数量相比较外排序少,排序的数据可以一次装入内存中,在内存中进行排序.外排序: 需要比较的数据数量相比较内排序多,数据无法一次装入内存进行排序操作.数据一般存储在 阅读全文