同一个排序算法对一组记录排序,为什么第二遍运行永远比第一遍快?
下面是代码
#include "stdio.h"
#include "time.h"
#include "Sort.cpp"
#ifndef CLOCK_(CODES,TIMES)
#define CLOCK_(CODES,TIMES) {clock_t start,stop;start=clock();{CODES;}stop=clock(); TIMES=((double)(stop-start))/CLOCKS_PER_SEC;}
#endif
int main(){
int a[]={1,9,5,7,4,2,8,3,5,1,2,2,17,19};
int n=sizeof (a)/sizeof (int);
double ggg;
CLOCK_(BubbleSort(a,0,n-1),ggg);
printf("%f\n",ggg);
for (int i=0;i<n;i++)printf("%d\n",a[i]);
int b[]={1,9,5,7,4,2,8,3,5,1,2,2,17,19};
CLOCK_(BubbleSort(b,0,n-1),ggg);
for (int i=0;i<n;i++)printf("%d\n",a[i]);
printf("%f\n",ggg);
return 0;
}
不管运行多少遍,调用同一个排序方法,第二次调用总比第一次调用排序时间短。这里是冒泡排序,其他排序方法也一样。
这是咋回事啊



...全文
相关推荐
记录排序算法运行时间(精确到微秒)和移动步数
在数据结构中学到的各种排序算法,做课设需要分析它们的运行时间,该代码可以将时间精确到微秒,解决了排序时间太短 造成clock()函数记录的时间是0的问题。附加各种排序算法移动步数的统计
常用的排序算法总结(各种内部排序算法和外部排序算法)
现代常见的排序算法,易于理解,讲解详细,有源代码
各种排序算法时间性能的比较
1、问题描述 对本章的各种排序方法(直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序和归并排序)的时间性能进行比较。 2、 基本要求 (1)设计并实现上述各种排序算法; (2)对正序和逆序的初始排列分别调用上述排序算法,并比较时间性能; (3)对随机产生的初始排列分别调用上述排序算法,并比较时间性能。 3、 设计思想 上述各种排序方法都是基于比较的内排序,其时间主要消耗在排序过程中进行的记录的比较和移动,因此,统计在相同数据状态下不同排序算法的比较次数和移动次数,即可实现比较各种排序算法的目的。 [思考题]如果测算每种排序算法所用的实际时间,应如何修改排序算法?
各种排序算法的优缺点
冒泡排序 选择排序 插入排序 缩小增量排序 快速排序 箱排序
比快排还快的排序算法
我测试过在500000的范围内比一般的快排快,但是不知道增加数据大小后,两者的优劣(用的Pascal语言)


