c语言基础编程100道 最高效的排序算法?
最高效的排序算法?
直接插入排序:数据有序时,执行效率最高,时间复杂度为O(n);数据基本逆序时,执行效率最低,时间复杂度为O(N2)。因此,数据越接近有序,直接插入排序算法的性能越好。希尔排序:时间效率为O(n(log2n)2)直接选择排序:时间效率为O(n^2)-虽然移动次数较少,但比较次数仍然较多。堆排序:时间效率是O(nlog2n)气泡排序:时间效率是O(n^2)-因为我们必须考虑最坏的情况(所有数据元素的顺序相反),当然,最好的情况是所有数据元素都是按顺序排列的,此时,循环是n-1次,时间复杂度为O(n)快速排序:时间效率:一般情况下,时间复杂度为O(nlog2n),最坏情况是所有数据元素都是正序或逆序的。此时,每个标准元素将当前数组划分为一个子数组,子数组的大小比当前数组小1,时间复杂度为O(N2)
请问大神最奇葩的排序算法是什么?
我想给大家介绍一下这个睡眠排序算法。您在4chan上匿名发布了这些代码:
此算法的基本原理是为数组中的每个数据X创建一个新线程:
●睡眠时间X秒
●打印输出X
所有数据将同时被排序。
它适用于所有非负值数据。
在网上论坛上很少看到这样的排序算法。
5000个数中找出10个最大的,用哪种排序算法比较好?
该问题的最优时间复杂度为O(n)。所以如果一定要使用排序算法,如果标题条件允许,请尽量选择o(n)排序算法如bucket排序。另一种解决方案是构建一个大小为10的堆,按顺序遍历数组,并在堆满时移除最上面的元素。这样,最多可获得10个元素。时间复杂度为O(nlog10)。
c语言基础编程100道 选择排序算法java c语言必背100代码
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。