6、7年前高中刚毕业时写过一个,原先写的早就找不到,不过算法还是记得很清楚,凭印象又写出来了。

源文件 http://blog.chaifeng.com/upload/full_array.c.utf-8.html

C 源文件 http://blog.chaifeng.com/upload/full_array.c

源代码用 Vim 编辑
语法高亮文件用 Vim 生成,大家可以参考一下
:TOhtml

执行效率测试:

OS : RedHat AS3 update 6

CPU : P3 1G

内存: 512M

GCC : gcc (GCC) 3.2.3 20030502

编译时没加优化 : gcc -o full_array full_array.c

全排列 10 个元素,耗时约 1.72 秒

time ./full_array “0192837465” > /dev/null

real 0m1.718s

user 0m1.720s

sys 0m0.000s

全排列 11 个元素,耗时约 18.9 秒

time ./full_array “0192837465a” > /dev/null

real 0m18.949s

user 0m18.920s

sys 0m0.020s

全排列 12 个元素,耗时约 3分55 秒

time ./full_array “0192837465ab” > /dev/null

real 3m55.335s

user 3m51.020s

sys 0m0.240s

基本上比用递归快一个数量级

如果有问题,欢迎一起讨论

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.