N分ヒープについて
Posted: 2016年7月10日(日) 13:52
N分ヒープによってデータを格納する際に、そのデータをすでに格納されているデータと大きさを比較した回数を返す関数を作りたいのですが、よくわかりません。どうしたらよいでしょうか?
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 5000000
int A[N];
int B[N];
int insert_n_heap(int d,int n){
int i=N-1;
long count=0;
A[N-1]=d;
while(i!=0){
if(A[i]<=A[(i-1)/n]){
A[i]=A[(i-1)/n];
A[(i-1)/n]=d;
count++;
}
i=(i-1)/n;
count++;
}
return count;
}
int main(void){
int i,j;
long result;
clock_t start,end;
int a;
for(a=0;a<N;a++){
A[a]=0;
}
srand((unsigned)time(NULL));
for(i=0;i<N;i++){
B[i]=rand();
}
start=clock();
for(j=0;j<N;j++){
result+=insert_n_heap(B[j],2);
}
end=clock();
printf("Tins=%f sec\n",(double)(end-start)/CLOCKS_PER_SEC);
printf("Cins=%ld\n",result);
return 0;
}