void buildheap(size_t root_idx){ if ( root_idx >= n ){ return; } buildheap(root_idx * 2 + 1); buildheap(root_idx * 2 + 2); downbubble(newheap->elements, root_idx, n, esize, compfunc); }
int main(){ int i; int c; int a[N]; printf("U should input the nu\n"); get(a,N); put(a,N); buildheap(a,N); c=a[0]; a[0]=a[i]; a[i]=c; for(i=N-1;i>=0;i--){ heapify(a,i,N); c=a[0]; a[0]=a[i]; a[i]=c; put(a,N); } return 0; }
void Dijkstra() { int i,mn,t; for(i=1;i<=n;i++) { dist[i]=maxw; p[i]=lc[i]=i; } dist[vs]=0; p[0]=n; buildheap(p,CFun); while(p[0]>0) { mn=extract(p,CFun); i=first[mn]; while(i!=-1) { if(dist[g[i].y]>dist[mn]+g[i].w) { dist[g[i].y]=dist[mn]+g[i].w; shiftup(p,lc[g[i].y],CFun); } i=g[i].next; } } }
void main(int argc,char* argv[]) { if(argc<1) { printf("Usage:(list of integers)"); return; } int a[argc]; int i; printf("argc: %d\n",argc); for(i=0;i<argc;i++) { a[i]=atoi(argv[i]); //printf("%d\n",a[i]); } for(i=0;i<argc;i++) { //printf("%d ",a[i]); } //process buildheap(argc,a); heapsort(argc,a); //output printf("Heap Sort:\n"); display(argc,a); }
void heapsort(int A[], int n) { int i, j, heapsize = n; int tmp; buildheap(A, n); printf("X: "); for(j = 0; j < n; j++) { printf("%d ", A[j]); } printf("\n"); for(i = n-1; i > 0; i--) { tmp = A[0]; A[0] = A[i]; A[i] = tmp; heapsize--; max_heapify(A, heapsize, 0); printf("%d: ", n-i); for(j = 0; j < n; j++) { printf("%d ", A[j]); } printf("\n"); } }
void heapsort() { buildheap(); while (n > 1) { n--; swap(a[0], a[n]); downheap(0); } }
void heapsort(void **p, int size){ int i; buildheap(p,size); for(i=(size-1);i>=0;i--){ SWAP(&p[0],&p[i]); heapify(p,0,i); } }
void heapsort(ll *ar){ buildheap(ar); int i=0; for(;heapsize>0;){ swap(&ar[heapsize-1],&ar[0]); heapsize--; heapify(ar,0); } }
//sortowanie tablicy w miejscu void heapsort(int tab[], int length) { int i; buildheap(tab, length); for (i = length; i > 0; --i) { swap(&tab[0], &tab[heapsize]); //zamiana heapsize--; heapify(tab, 0); } }
void heapsort(int A[])//通过建立好的堆,取出A[1]放入尾部来排序 { buildheap(A); for(int i=N;i>1;i--) { swap(&A[1],&A[i]); N--; maxheapify(A,1); } }
void hsort(void *base, size_t nel, size_t width, int (*compare)(const void *a, const void *b)) { buildheap(base, nel, width); int i = nel - 1; while (i > 0) { swap(base, base + i*width, width); heapify(base, 0, i , width); i--; } }
void heapsort() { print(a, SIZE); buildheap(); print(a, SIZE); while (n > 1) { n--; exchange(0, n); downheap(0); } print(a, SIZE); }
void heapsort(int *a, int len){ int temp; for(; len; len--){ buildheap(a, len); temp = a[0]; a[0] = a[len-1]; a[len-1] = temp; } }
void heapsort(int a[],int length) { int i,temp; buildheap(a,length); for(i=length-1;i>=1;i--) { temp=a[0]; a[0]=a[i]; a[i]=temp; heapsize--; heapify(a,0); } }
void heapsort(int *a,int n) { buildheap(a,n); int i,temp; for(i=n;i>=2;i--) { temp=a[1]; a[1]=a[i]; a[i]=temp; n=n-1; heapify(a,1,n); } }
heapsort(int **p, int size) //procedure of sort { int i,*tmp,k; buildheap(p,size); for(i=(size-1);i>=0;i--) { //for(k=0; k<size; k++) //printf("%d ",v[k]); tmp=p[0]; p[0]=p[i]; p[i]=tmp; heapift(p,0,i); } }
void build(int n) { void turn(int),cut(int,int,int),buildheap(int),getans(); int i; turn(n); num=0; h[0][0][0]=0; cut(1,sum,1); head=0; for (i=1;i<=num;i++) buildheap(i); memset(color,0,sizeof(color)); color[0]=n; getans(); }
/* ----------------------------------------------------------------------------*/ void heapsort(int a[], int size) { int i, j; //建立堆 buildheap(a, size); printf("after heap:\r\n"); print(a, size); //交换数据 for(i = size-1; i > 0; i--) { swap(&a[i], &a[0]); printf("after swap:"); print(a, size); heapadjust(a, 0, i); print(a, size); } }
BinaryHeap::BinaryHeap(int* h, int s) { A = h; size = s; buildheap(); }