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; }
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; }
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; }
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; }