正文

堆排序和选择排序的效率对比的程序2006-10-24 12:26:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/manbuyuduan/19677.html

分享到:

#include <stdlib.h>#include <stdio.h>#include <dos.h>const int MAXSIZE = 20000;const int N = 5;int Data[MAXSIZE];void Print(){  int i;  for (i = 0; i < MAXSIZE; i++)    printf ("%d ", Data[i]);}void Create(){  int i;  randomize();  for (i = 0; i < MAXSIZE; i++)    Data[i] = random(1000);  printf("\n");}void Swap(int *a, int *b){  int temp;  temp = *a;  *a = *b;  *b = temp;}void PushDown_MinHeap(int first, int last){  long i, j, x;  i = first;  j = i * 2;  x = Data[i];  while (j <= last){    if (j < last && Data[j] < Data[j+1])      j++;    if (x < Data[j]){      Data[i] = Data[j];      i = j;      j = 2 * i;    }    else      break;  }  Data[i] = x;}void MinHeapSort(int first, int last){  int i;  for (i = last / 2; i >= first; i--)    PushDown_MinHeap(i, last);  for (i = last; i > first; i--){    Swap(&Data[first], &Data[i]);    PushDown_MinHeap(first, i - 1);  }}void Sort(){  int i, j;  for (i = 0; i < MAXSIZE-1; i++)    for (j = i; j < MAXSIZE; j++)      if (Data[i] < Data[j]) Swap(&Data[i], &Data[j]);}void main(){  struct time t1, t2;  float t;  printf ("%s\n","---------------");  Create();  Print();  gettime(&t1);//  MinHeapSort(0, MAXSIZE-1);  Sort();  gettime(&t2);  printf ("%s\n","---------------");//  Print();  t = 60*(t2.ti_min-t1.ti_min)+(t2.ti_sec-t1.ti_sec)+1/100*(t2.ti_hund-t1.ti_hund);  printf("running time is: %f\n",t);}

阅读(4848) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册