正文

堆排序和选择排序的效率对比的程序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);
}

阅读(4747) | 评论(0)


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

评论

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