[quote=引用 楼主 u011995873 的回复:] 如何处理程序中函数之间的反复调用(或对象间的相互引用)而导致的segfault? 有时,比如就简单说排序算法中得Quicksort,当排序数数量少时,程序可以正常运行,但当数量较多时,程序就无法运行,那该如何处理? 有木有懂得大型公司,比如谷歌,腾讯.是如何处理这种大量数据的?
不使用递归, 手动做栈?
平凡实现的qsort在特定数据分布的时候, 递归深度会到 O(N), 挂了就很正常, 你只要做一点点改变, 每次只把比较长的分组递归, 较短的一部分做尾递归优化, 就可以保证递归深度不会超过 O(logN)..
[quote=引用 3 楼 worldy 的回复:] [quote=引用 楼主 u011995873 的回复:] 如何处理程序中函数之间的反复调用(或对象间的相互引用)而导致的segfault? 有时,比如就简单说排序算法中得Quicksort,当排序数数量少时,程序可以正常运行,但当数量较多时,程序就无法运行,那该如何处理? 有木有懂得大型公司,比如谷歌,腾讯.是如何处理这种大量数据的?
改成尾递归呀,保准不堆栈溢出!!!
好吧,你的电脑弱爆到了令我震惊的程度了。 我的机器上,10^8也是秒出排序结果啊。 引用 6 楼 taodm 的回复: 楼主真遇到过qsort导致溢出的场合?一台普通的PC上,当待排序元素达到10^6以上时,传统的递归快排就会导致栈溢出异常.
楼主真遇到过qsort导致溢出的场合?
3,881
社区成员
9,054
社区内容
加载中
试试用AI创作助手写篇文章吧