C++ qsort 实现
来源:互联网 发布:淘宝打折软件开发接口 编辑:程序博客网 时间:2024/06/08 10:07
自己写的C++ STL Algorithm中qsort的实现如下:
void swap(void *a, void *b, int size){ unsigned char *bytesOfA = reinterpret_cast<unsigned char*>(a); unsigned char *bytesOfB = reinterpret_cast<unsigned char*>(b); char tmp = 0; for(int i = 0; i < size; ++i) { tmp = *(bytesOfA+i); *(bytesOfA+i) = *(bytesOfB+i); *(bytesOfB+i) = tmp; }}int partition(void *base, int num, int size, int (*comparator)(const void *, const void *)){ int first = 0, end = num-1; while(first < end) { while(first < end && comparator(base+first*size, base+end*size) <= 0) { --end; } if(first < end) { swap(base+first*size, base+end*size, size); ++first; } while(first < end && comparator(base+first*size, base+end*size) <= 0) { ++first; } if(first < end) { swap(base+first*size, base+end*size, size); --end; } } return first;}void qsort(void *base, int num, int size, int (*comparator)(const void *, const void *)){ if(num > 0) { int pivot = partition(base, num, size, comparator); qsort(base, pivot, size, comparator); qsort(base+(pivot+1)*size, num-pivot-1, size, comparator); }}用poj2388题测试,时间、内存比用STL的qsort还要略少一点,可能是数据不大的原因吧,STL里的qsort可以对非常大的内存空间排序,应该是迭代实现的。
- C语言qsort算法的指针实现
- C语言qsort()函数的实现
- qsort.c
- [C]qsort
- c++.qsort
- 如何利用C语言中的qsort库函数实现快速排序?
- 如何利用C语言中的qsort库函数实现快速排序
- c中的qsort
- C语言中的qsort
- C语言 qsort() 函数
- C qsort 排序
- C语言库函数qsort
- C语言--qsort函数
- C STL Qsort使用
- C语言qsort用法
- C中的qsort函数
- C语言qsort用法
- qsort.c源代码分析
- ubuntu下codeblocks用Valgrind调试时出现的问题
- ASP.NET,IsPostBack
- java
- 第一个webService一些问题
- 获得应用程序根目录
- C++ qsort 实现
- 八大排序算法总结
- Windows Installer Error Messages
- Usaco 1.4.4 母亲的牛奶(Mother's Milk)
- java多线程:死锁
- 博客、微博、社交网站的对比与未来发展浅析
- hud 3905 - Sleeping [动态规划]
- 也谈关于 Zend Studio-8.0.0中文汉化
- 如何防止Android应用被反编译