整数排序算法的问题?
发布网友
发布时间:2022-05-11 08:27
我来回答
共3个回答
热心网友
时间:2023-10-09 10:07
快排(最普遍 最简单)
算法思想为 分治
实现过程如上 gis19831203 所说的
“寻找枢轴(位于枢轴左边的都比枢轴小,位于枢轴右边的都比枢轴大),反复如此,用递归可以实现。”
堆排(不稳定,但是一种解决某类问题有效的算法思想)
……
这是时间复杂度为 N*(log2 N)的算法
更快的算法我就不知道了!!
你的最大数据的运算量为
2^32*32
估计……
即使是这样的算法也要几十分钟的运算时间!!!
除非你用超级计算机。。。
冒泡,插入……等N^2的算法
就不用考虑了
快排需要预先读入所有数据
堆排好像就不需要 可以一个一个读 建立堆
然后进行操作 但是 堆也是需要完整记录的
鉴于你的最大数据量为2^32!!
仅仅从空间上来说就不好满足~~~
即使算法效率很高,很快,很牛。
一般的编辑器也很难满足你的最大数据的要求
对操作系统的要求也很苛刻(建议用Linix)
C 好像自带 排序函数
!!!!!!!
原来是这样。。
无语……
这样的话用 快排算法
50万也就是0。01秒吧(应该是瞬间的事情)
你用的算法是N^2的算法 太慢了
一般来说这类题要求的时间应该在0。1sec~1sec之间
考察的知识点就是时间复杂度为 N*(log2 N)的排序算法
你的程序无法在限定时间内完成所有数据的测试
建议使用快排算法
到网上 搜一艘 此类算法的讲解
找到合适你自己的讲解 然后学习。。。。
热心网友
时间:2023-10-09 10:08
可以用冒泡法试试,就是不断排出相邻两数的大小
热心网友
时间:2023-10-09 10:08
可以用快速排序试试,基本思想:
寻找枢轴(位于枢轴左边的都比枢轴小,位于枢轴右边的都比枢轴大),反复如此,用递归可以实现。
可以找本书好好看看,一般的算法或数据结构书籍上都有常见的排序算法,也比较了各自的优缺点