选择排序函数的计时程序

来源:互联网 发布:java反射原理 编辑:程序博客网 时间:2024/05/18 13:04

上文中给大家介绍了两种计时函数,在这里便使用这两个函数进行选择排序函数在最坏情况下的性能测量。

选择分类的最坏情况出现在元素逆序排列时。也就是说,当对元素按降序排列的数组进行升序排列的时候。为进行计时测量,数组的大小分别选择0,10,20,···,90,100,200,···,1600.下面代码给出了用于实施计时程序的代码。

为了进行计时测试,使用一个 for 循环来控制数组的大小。在每次迭代的时候,产生一个新的包含 sizelist[ i ] 个元素的逆序数组。在调用函数 sort 前以及调用 sort 函数返回时,都调用函数 clock 。本程序在vs2013上编译通过。

#include<stdio.h>#include<stdlib.h>#include<time.h>#define MAX_SIZE 1601#define ITERATIONS 26#define SWAP(x,y,t) ((t)=(x),(x)=(y),(y)=(t))void sort(int[],int);void main(void){int i, j;int list[MAX_SIZE];int sizelist[] = { 0, 10, 20, 30, 40, 50, 60, 70, 80, 90,100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100,1200, 1300, 1400, 1500, 1600 };double span;clock_t start, stop;printf("     n    time\n");for (i = 0; i < ITERATIONS; i++){for (j = 0; j < sizelist[i]; j++)list[j] = sizelist[i] - j;start = clock();sort(list, sizelist[i]);stop = clock();span = ((double)(stop - start));printf("%6d    %f\n", sizelist[i], span);}system("pause");}void sort(int list[], int n){int i, j, min, temp; for (i = 0; i < n - 1; i++){min = i;for (j = i + 1; j < n; j++){if (list[j] < list[min])min = j;}SWAP(list[i], list[min], temp);}}
参考:Fundamentals of Data Structures in C

0 0
原创粉丝点击