Beispiel #1
0
    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);
    }
Beispiel #2
0
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;
}
Beispiel #3
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;
		}
	}
}
Beispiel #4
0
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);
}
Beispiel #5
0
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);
    }
}
Beispiel #7
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);
	}
}
Beispiel #9
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);
}
}
Beispiel #10
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);		
	}
}
Beispiel #11
0
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);
}
Beispiel #13
0
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);	
	}
}
Beispiel #15
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);
     }
 }
Beispiel #16
0
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);
	}	
}
Beispiel #17
0
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();
}
Beispiel #18
0
/* ----------------------------------------------------------------------------*/
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);
    }
}
Beispiel #19
0
BinaryHeap::BinaryHeap(int* h, int s)
{
	A = h;
	size = s;
	buildheap();
}