Advertisement
ludaludaed

e

Jan 18th, 2023
902
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.09 KB | None | 0 0
  1. // Main.java ==========================================================================================================================
  2.  
  3. package org.example;
  4.  
  5. public class Main {
  6.     public static void main(String[] args) {
  7.         Integer[] a = {1, 6, 2, 3, 4, 6, -5, -9, 10};
  8.         Sorter<Integer> sorter = new QSorter<>(a);
  9.         sorter.sort();
  10.         for (var item :
  11.                 a) {
  12.             System.out.println(item);
  13.         }
  14.     }
  15. }
  16.  
  17. // Sorter.java ========================================================================================================================
  18.  
  19. package org.example;
  20.  
  21. public abstract class Sorter<T> {
  22.     protected Comparable<T>[] data;
  23.  
  24.     protected Sorter(Comparable<T>[] data) {
  25.         this.data = data;
  26.     }
  27.  
  28.     abstract void sort();
  29. }
  30.  
  31. // BubbleSorter.java ==================================================================================================================
  32.  
  33. package org.example;
  34.  
  35. public class BubbleSorter<T> extends Sorter<T> {
  36.     protected BubbleSorter(Comparable<T>[] data) {
  37.         super(data);
  38.     }
  39.  
  40.     @Override
  41.     void sort() {
  42.         for (int i = 0; i < data.length; i++) {
  43.             for (int j = i + 1; j < data.length; j++) {
  44.                 if (data[i].compareTo((T) data[j]) > 0) {
  45.                     var temp = data[i];
  46.                     data[i] = data[j];
  47.                     data[j] = temp;
  48.                 }
  49.             }
  50.         }
  51.     }
  52. }
  53.  
  54. // DefaultSorter.java =================================================================================================================
  55.  
  56. package org.example;
  57.  
  58. import java.util.Arrays;
  59.  
  60. public class DefaultSorter<T> extends Sorter<T> {
  61.     protected DefaultSorter(Comparable<T>[] data) {
  62.         super(data);
  63.     }
  64.  
  65.     @Override
  66.     void sort() {
  67.         Arrays.sort(data);
  68.     }
  69. }
  70.  
  71. // QSorter.java =======================================================================================================================
  72.  
  73. package org.example;
  74.  
  75. import java.lang.constant.Constable;
  76.  
  77. public class QSorter <T> extends Sorter<T> {
  78.     protected QSorter(Comparable<T>[] data) {
  79.         super(data);
  80.     }
  81.  
  82.     @Override
  83.     void sort() {
  84.         quickSort(0, data.length - 1);
  85.     }
  86.  
  87.     private void quickSort(int low, int high) {
  88.         if (data.length == 0) {
  89.             return;
  90.         }
  91.  
  92.         if (low >= high) {
  93.             return;
  94.         }
  95.  
  96.         int middle = low + (high - low) / 2;
  97.         var opora = data[middle];
  98.  
  99.         int i = low, j = high;
  100.         while (i <= j) {
  101.             while (data[i].compareTo((T) opora) < 0) {
  102.                 i++;
  103.             }
  104.  
  105.             while (data[j].compareTo((T) opora) > 0) {
  106.                 j--;
  107.             }
  108.  
  109.             if (i <= j) {
  110.                 var temp = data[i];
  111.                 data[i] = data[j];
  112.                 data[j] = temp;
  113.                 i++;
  114.                 j--;
  115.             }
  116.         }
  117.  
  118.         if (low < j) {
  119.             quickSort(low, j);
  120.         }
  121.  
  122.         if (high > i) {
  123.             quickSort(i, high);
  124.         }
  125.     }
  126. }
  127.  
  128.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement