#include
#include"time.h"
#include
#define SIZE 100000
int A[SIZE];
void insert(int *A,int size,int x){
int hole=size;
while(hole>0 && x-1)/2]){
A[hole]=A[(hole-1)/2];
hole=(hole-1)/2;}
A[hole]=x;
}
int deleteMin(int *A,int size){
int min=A[0],hole=0,x=A[--size];
int sid;
while(size-1>=(2*hole+1)){
if(size-1==2*hole+1){
sid=2*hole+1;
}
else{
if(A[2*hole+1]2*hole+2]){
sid=2*hole+1;}
else{
sid=2*hole+2;}
}
if(x<=A[sid])
break;
A[hole]=A[sid];
hole=sid;
}
A[hole]=x;
return min;
}
void HeapSort(int *A,int n){
for(int i=0;iinsert(A,i,A[i]);
}
for(int i=n-1;i>=0;i--){
A[i]=deleteMin(A,i+1);}
}
int main(){
clock_t start,finish;
double Total_time;
start=clock();
HeapSort(A,SIZE);
finish=clock();
Total_time=(double)(1000*(finish-start)/CLOCKS_PER_SEC);
printf("time=%ld %ld",start,finish);
}
运行时间总为0,但是不用size,输入数进去,出来结果是对的,不知道哪里出了问题