Esempio n. 1
0
File: max_heap.c Progetto: pharic/c
int main() {
	int *a;
	int n,i;	
	printf ("Enter the size of heap: ");
	scanf (" %d", &n);
	a = malloc (n*sizeof(int));
	printf ("Enter %d elements: ", n);

	for (i=0; i<n; i++) {
        scanf (" %d", &a[i]);
    }

	build_heap(a,n);
	printf ("After build_heap: ");
	for (i=0; i<n; i++)
        printf ("%d ", a[i]);
	
	printf ("\nMax: %d\n", extract_max(a,&n));
	printf ("Max: %d\n", extract_max(a,&n));
	printf ("Max: %d\n", extract_max(a,&n));
	printf ("Max: %d\n", extract_max(a,&n));

	// Heap after extract_max
	for (i=0; i<n; i++)
        printf ("%d ", a[i]);
	printf ("\n");
	free(a);
	return 0;
}
Esempio n. 2
0
File: heap.cpp Progetto: runys/EDA2
vector<int> Heap::heap_sort(){
	build_a_heap();

	vector<int> ordenado;
	int temp_last_pos = this->last_pos;
	for (int i = 0; i < temp_last_pos; ++i){
		ordenado.push_back(extract_max());
	}

	return ordenado;
}
Esempio n. 3
0
File: 1678.c Progetto: ikimi/HDUOJ
int main()
{
    int t, n, i, sum;
    scanf("%d", &t);
    while (t--)
    {
        scanf("%d", &n);
        for (i = 0; i < n; i++)
            scanf("%d", &data[i]);
        size = n;
        build_max_heap(n);
        i = sum = 0;
        while ((i += 2) < n)
        {
            extract_max();
            extract_max();
            sum += extract_max();
            i++;
        }
        printf("%d\n", sum);
    }
    return 0;
}
Esempio n. 4
0
int main()
{
	int n,i,value=0; //number of nodes
	scanf("%d",&n);
	int a[n];		
	for(i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	char str[20];
	scanf("%s",str);
	
	while(strcmp(str,"exit")!=0){
		if(strcmp(str,"parent")==0){
			scanf("%d",&i);
			value=parent(n,a,i);
			if(value!=-1)
				printf("%d",a[value]);
		}
		else if(strcmp(str,"left")==0){
			scanf("%d",&i);
			value=left(n,a,i);
			if(value!=-1)
				printf("%d",a[value]);
		}
		else if(strcmp(str,"right")==0){
			scanf("%d",&i);
			value=right(n,a,i);
			if(value!=-1)
				printf("%d",a[value]);
		}
		else if(strcmp(str,"minimum")==0){
			value=minimum(n,a);
			printf("%d",value);
		}
		else if(strcmp(str,"minimum")==0){
			value=maximum(n,a);
			printf("%d",value);
		}
		else if(strcmp(str,"leaf_nodes")==0){
			leaf_nodes(n,a);
		}
		else if(strcmp(str,"buildheap_max")==0){
			buildheap_max(n,a);
			for(i=1;i<=n;i++){
				printf("%d ",a[i]);
			}
		}
		else if(strcmp(str,"heapsort")==0){
			heapsort(n,a);
		}
		else if(strcmp(str,"extract_max")==0){
			value=extract_max(n,a);
			printf("%d",value);
		}
		else if(strcmp(str,"extract_min")==0){
			value=extract_min(n,a);
			printf("%d",value);
		}
		else if(strcmp(str,"increase_key")==0){
			scanf("%d%d",&i,&value);
			increase_key(n,a,i,value);
		}
		else if(strcmp(str,"decrease_key")==0){
			scanf("%d%d",&i,&value);
			decrease_key(n,a,i,value);
		}
		else if(strcmp(str,"buildheap_min")==0){
			buildheap_min(n,a);
			for(i=1;i<=n;i++){
				printf("%d ",a[i]);
			}
		}
		scanf("%s",str);
	}

	return 0;
}