Advertisement
chowdhury_riham

HeapSort

Jan 12th, 2018
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.98 KB | None | 0 0
  1. package com.company;
  2. import java.util.ArrayList;
  3. import java.util.Scanner;
  4.  
  5. public class Main {
  6.  
  7.     public static void main(String[] args) {
  8.         // write your code here
  9.         int i = 0;
  10.         Scanner sc = new Scanner(System.in);
  11.         System.out.println("Please enter the input and when finish write DONE");
  12.         ArrayList<String> list = new ArrayList<String>();
  13.         list.add(sc.nextLine());
  14.         while (!list.get(i).equalsIgnoreCase("DONE")) {
  15.             list.add(sc.nextLine());
  16.             i++;
  17.         }
  18.         list.remove(i);
  19.         int[] arry =new int[i];
  20.         arry = stringTOint(list, i);
  21.         HeapSort(arry, i);
  22.         printHeap(arry);
  23.     }
  24.  
  25.     public static int[] stringTOint(ArrayList<String> list, int i) {
  26.         int[] arr = new int[i+1];
  27.         for (int index = 0; index <i; index++) {
  28.             arr[index+1] = Integer.valueOf(list.get(index));
  29.         }
  30.         return arr;
  31.     }
  32.  
  33.     public static void Heapify(int[] arr, int i, int n) {
  34.         int p = i;
  35.         int left = 2*p;
  36.         int right = 2*p + 1;
  37.         int largest = i;
  38.         if (left <= n && arr[left] > arr[i]) largest = left;
  39.         if (right <= n && arr[right] > arr[largest]) largest = right;
  40.         if (i != largest) {
  41.             int temp = arr[i];
  42.             arr[i] = arr[largest];
  43.             arr[largest] = temp;
  44.             Heapify(arr, largest, n);
  45.         }
  46.     }
  47.  
  48.     public static void buildHeap(int[] arr, int n) {
  49.         for (int p = (n / 2); p > 0; p--) Heapify(arr, p, n);
  50.     }
  51.  
  52.     public static void HeapSort(int[] arr, int n) {
  53.         buildHeap(arr, n);
  54.         for (int s = n; s > 1; s--) {
  55.             int temp = arr[1];
  56.             arr[1] = arr[s];
  57.             arr[s] = temp;
  58.             n--;
  59.         }
  60.     }
  61.  
  62.     public static void printHeap(int[] arr) {
  63.         System.out.println("The sorted List");
  64.         for (int p = 1; p < arr.length; p++) {
  65.             System.out.print(arr[p] + "\t");
  66.         }
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement