#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);
}
正文
堆排序和选择排序的效率对比的程序2006-10-24 12:26:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/manbuyuduan/19677.html
阅读(4747) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论