Advertisement
Guest User

QuickSort

a guest
Jan 26th, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.11 KB | None | 0 0
  1. import java.util.Scanner;
  2. public class Sort {
  3.  
  4.     /*Тази функция взима последния елемент за опорна точка
  5.    и го поставя на правилна позиция
  6.    в сортирания масив ии поставя всички по-малки
  7.    елементи на ляво от опрната точка
  8.    и всички по големи на дясно от нея*/
  9.     int partition(double second[], int low, int high) {
  10.         double pivot = second[high];
  11.         int i = (low - 1); // индекса на по-малкия елемент
  12.         for (int j = low; j < high; j++) {
  13.             // ако елемента е по-малък или равен на
  14.             // опорния елемент
  15.             if (second[j] <= pivot) {
  16.                 i++;
  17.  
  18.                 // разменяме arr[i] и arr[j]
  19.                 double temp = second[i];
  20.                 second[i] = second[j];
  21.                 second[j] = temp;
  22.             }
  23.         }
  24.  
  25.         // раменяме arr[i+1] и arr[high] (или опорния елемент)
  26.         double temp = second[i + 1];
  27.         second[i + 1] = second[high];
  28.         second[high] = temp;
  29.  
  30.         return i + 1;
  31.     }
  32.  
  33.  
  34.     /* Главната функция, която прилага QuickSort()
  35.     arr[] --> да се сортира масива,
  36.     low --> начален индекс,
  37.     high --> краен индекс */
  38.     void quicsort(double second[], int low, int high) {
  39.         if (low < high) {
  40.             double pi = partition(second, low, high);
  41.  
  42.             // Рекурсивно сортираните елементи преди
  43.             // разделянето и след него.
  44.             quicsort(second, low, (int)pi - 1);
  45.             quicsort(second, (int)pi + 1, high);
  46.         }
  47.     }
  48.  
  49.     /* Принтира масива*/
  50.     static void printArray(double second[]) {
  51.         int l = second.length;
  52.         for (int i = 0; i < l; ++i)
  53.             System.out.print(second[i] + " ");
  54.         System.out.println();
  55.     }
  56.  
  57.     public static void main(String[] args) {
  58.         Scanner scanner = new Scanner(System.in);
  59.  
  60.         System.out.println("Големина: ");
  61.         int size = Integer.parseInt(scanner.nextLine());
  62.  
  63.         int[] arr1 = new int[size];
  64.         int[] arr2 = new int[size];
  65.         double[] arr3 = new double[size];
  66.  
  67.         for (int i = 0; i < size; i++) {
  68.             System.out.println("Елемент за масив 1: ");
  69.             arr1[i] = Integer.parseInt(scanner.nextLine());
  70.         }
  71.  
  72.         for (int i = 0; i < size; i++) {
  73.             System.out.println("Елемент за масив 2: ");
  74.             arr2[i] = Integer.parseInt(scanner.nextLine());
  75.         }
  76.  
  77.         for (int i = 0; i < size; i++) {
  78.             arr3[i] = (double) arr1[i] / arr2[i];
  79.             System.out.print(arr3[i] + " ");
  80.         }
  81.         System.out.println();
  82.  
  83.         int m = size;
  84.  
  85.         quicSort ob = new quicSort();
  86.         ob.quicsort(arr2, 0, m - 1);
  87.         printArray(arr3);
  88.  
  89.  
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement