sidrs

DSAL_MN Ass 4

Mar 6th, 2025
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.11 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class HS {
  4.         public void heapSort(int[] arr) {
  5.                 int n = arr.length;
  6.  
  7.                 for (int i = n / 2 - 1; i >= 0; i--) {
  8.                         heapify(arr, n, i);
  9.                 }
  10.  
  11.                 for (int i = n - 1; i > 0; i--) {
  12.                         swap(arr, 0, i);
  13.                         heapify(arr, i, 0);
  14.                 }
  15.         }
  16.  
  17.         private void heapify(int[] arr, int n, int i) {
  18.                 int largest = i;
  19.                 int left = 2 * i + 1;
  20.                 int right = 2 * i + 2;
  21.  
  22.                 if (left < n && arr[left] > arr[largest]) {
  23.                         largest = left;
  24.                 }
  25.  
  26.                 if (right < n && arr[right] > arr[largest]) {
  27.                         largest = right;
  28.                 }
  29.  
  30.                 if (largest != i) {
  31.                         swap(arr, i, largest);
  32.                         heapify(arr, n, largest);
  33.  
  34.                 }
  35.         }
  36.  
  37.         private void swap(int[] arr, int i, int j) {
  38.                 int temp = arr[i];
  39.                 arr[i] = arr[j];
  40.                 arr[j] = temp;
  41.         }
  42.  
  43.         public void printArray(int[] arr) {
  44.                 for (int x : arr) {
  45.                         System.out.print(x + " ");
  46.                 }
  47.                 System.out.println();
  48.         }
  49.  
  50.         public static void main(String[] args) {
  51.                 Scanner scanner = new Scanner(System.in);
  52.                 HS heapSort = new HS();
  53.  
  54.                 System.out.print("Enter the size of the array: ");
  55.                 int size = scanner.nextInt();
  56.  
  57.                 int[] arr = new int[size];
  58.  
  59.                 System.out.println("Enter " + size + " elements: ");
  60.                 for (int i = 0; i < size; i++) {
  61.                         arr[i] = scanner.nextInt();
  62.                 }
  63.  
  64.                 System.out.print("Original array: ");
  65.                 heapSort.printArray(arr);
  66.  
  67.                 heapSort.heapSort(arr);
  68.                 System.out.print("Enter the size of the array: ");
  69.                 heapSort.printArray(arr);
  70.         }
  71. }
  72.  
  73.  
Advertisement
Add Comment
Please, Sign In to add comment