世界上最快的排序算法

世界上最快的排序算法,第1张

Timsort是一个自适应的、混合的、稳定的排序算法,融合了归并算法和二分插入排序算法的精髓,在现实世界的数据中有着特别优秀的表现。它是由Tim Peter于2002年发明的,用在Python这个编程语言里面。这个算法之所以快,是因为它充分利用了现实世界的待排序数据里面,有很多子串是已经排好序的不需要再重新排序,利用这个特性并且加上合适的合并规则可以更加高效的排序剩下的待排序序列。

从时间复杂度看,所有内部排序方法可以分为两类。

1.插入排序 选择排序 起泡排序

其时间复杂度为O(n2);

2.堆排序 快速排序 归并排序

其时间复杂度为O(nlog2n)。

这是就平均情况而言的,如果从最好的情况考虑,

则插入排序和起泡排序的时间复杂度最好,为O(n),

而其他算法的最好情况同平均情况大致相同。

如果从最坏的情况考虑,快速排序的时间复杂度为O(n2),插入排序和起泡排序虽然同平均情况相同,但系数大约增加一倍,运行速度降低一半,而选择排序、堆排序和归并排序则影响不大。

总之,

在平均情况下,快速排序最快;

在最好情况下,插入排序和起泡排序最快;

在最坏情况下,堆排序和归并排序最快。

改了一点点,大约10秒钟运行完1000 0000.

1秒运行完100 0000.

首先你要知道,打印语句是很慢的,这个10秒是删除掉打印语句后的速度.

------------------------------------

#include<math.h>

#include<stdio.h>

void main()

{

long i,n

printf("%d ", 2)

for(n=3n<=10000000n+=2)

{

int temp=int(sqrt(n))

for(i=3i<=tempi+=2)//改成+2

if(n %i == 0)

break

printf("%d ", n)//之前的判断去掉

}

printf("\n")

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8098633.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存