コード例 #1
0
heap_sort(int arr[], int size)
{
	int max;
	int i, n = size;
	buildHeap(arr, size);
		
	printf("Heap size is %d\n", size);
	printf("Heap is : ");	
	display(arr,size);
	display_heap(arr,size);
	printf("\n");

	while(size>1)
	{
		max = del_root(arr,&size);
		arr[size+1]=max;
		
		printf("Root = %d is deleted and placed at arr[%d]\n", max, size+1);
		
		printf("Heap size is %d\n", size);
		printf("Heap is  : ");	
		
		for(i=1;i<=size;i++)
			printf("%d  ",arr[i]);
		printf("\n");
		
		display_heap(arr, size);
		printf("\n");
		
		printf("Array is : ");	
		for(i=1;i<=size;i++)
			printf("%d  ",arr[i]);
		printf("_____");
		
		for(i=size+1;i<=n;i++)
			printf("%d  ",arr[i]);
		
		printf("\n\n");
		
		STOP;
	}
}/*End of heap_sort*/
コード例 #2
0
ファイル: maxheap.c プロジェクト: raunakkr/DS_Algorithms
void main(){
  int i;
int a[]={2,8};
int n=sizeof(a)/sizeof(a[0]);
h=create_heap();
  fill_heap(a,n);

  display_heap();

  printf("Top element is %d\n",top());

	 insert(77);
	 display_heap();
	printf("Top element is %d",top());

	  pop();
      display_heap();
		printf("Top element is %d",top());



}
コード例 #3
0
main()
{
    int i,ch,H[20],ps,ky;
    
    printf("Input array length: ");
    scanf("%d",&len);
	
    printf("\nInput array -\n");
    for(i=0;i<len;i++)
        scanf("%d",&H[i]);

    heapsize=len;
    
    //build_maxheap(H);
    build_minheap(H);
    
    printf("\nDisplaying heap -\n");
    display_heap(H);
    
	//printf("\n---------PRIORITY QUEUE-----------\n\n1.) Print maximum value in queue\n2.) Print and extract maximum value in queue\n3.) Increase key for an element in the queue\n4.) Insert key into the queue\n");
	printf("\n---------PRIORITY QUEUE-----------\n\n1.) Print minimum value in queue\n2.) Print and extract minimum value in queue\n3.) Decrease key for an element in the queue\n4.) Insert key into the queue\n");
	
	printf("\nEnter choice (1-4): ");
	scanf("%d",&ch);
	printf("\n");

	switch(ch)
	{
		case 1:
		//printf("%d\n",heap_maximum(H)); 
		printf("%d\n",heap_minimum(H));
		
		printf("Displaying PriorityQ: ");
		display_heap(H);
		break;

		case 2:
		//printf("%d\n",heap_max_extract(H));
		printf("%d\n",heap_min_extract(H));
		printf("Displaying PriorityQ: ");
		display_heap(H);
		break;

		case 3: 
		//printf("Enter position of the queue element whose key you want to increase (1-%d): ",len);
		printf("Enter position of the queue element whose key you want to decrease (1-%d): ",len);
		
		scanf("%d",&ps);
		printf("Enter new key: ");
		scanf("%d",&ky);
		
		//heap_increase_key(H,ps,ky);
		heap_decrease_key(H,ps,ky);
		
		printf("Displaying PriorityQ: ");
		display_heap(H);
		break;

		case 4: printf("Enter the new key you want to insert: ");
		scanf("%d",&ky);
		
		//maxheap_insert(H,ky);
		minheap_insert(H,ky);
		printf("Displaying PriorityQ: ");
		display_heap(H);
		break;

		default: break;
	}
	
	printf("\n");   
}