Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Main.java ==========================================================================================================================
- package org.example;
- public class Main {
- public static void main(String[] args) {
- Integer[] a = {1, 6, 2, 3, 4, 6, -5, -9, 10};
- Sorter<Integer> sorter = new QSorter<>(a);
- sorter.sort();
- for (var item :
- a) {
- System.out.println(item);
- }
- }
- }
- // Sorter.java ========================================================================================================================
- package org.example;
- public abstract class Sorter<T> {
- protected Comparable<T>[] data;
- protected Sorter(Comparable<T>[] data) {
- this.data = data;
- }
- abstract void sort();
- }
- // BubbleSorter.java ==================================================================================================================
- package org.example;
- public class BubbleSorter<T> extends Sorter<T> {
- protected BubbleSorter(Comparable<T>[] data) {
- super(data);
- }
- @Override
- void sort() {
- for (int i = 0; i < data.length; i++) {
- for (int j = i + 1; j < data.length; j++) {
- if (data[i].compareTo((T) data[j]) > 0) {
- var temp = data[i];
- data[i] = data[j];
- data[j] = temp;
- }
- }
- }
- }
- }
- // DefaultSorter.java =================================================================================================================
- package org.example;
- import java.util.Arrays;
- public class DefaultSorter<T> extends Sorter<T> {
- protected DefaultSorter(Comparable<T>[] data) {
- super(data);
- }
- @Override
- void sort() {
- Arrays.sort(data);
- }
- }
- // QSorter.java =======================================================================================================================
- package org.example;
- import java.lang.constant.Constable;
- public class QSorter <T> extends Sorter<T> {
- protected QSorter(Comparable<T>[] data) {
- super(data);
- }
- @Override
- void sort() {
- quickSort(0, data.length - 1);
- }
- private void quickSort(int low, int high) {
- if (data.length == 0) {
- return;
- }
- if (low >= high) {
- return;
- }
- int middle = low + (high - low) / 2;
- var opora = data[middle];
- int i = low, j = high;
- while (i <= j) {
- while (data[i].compareTo((T) opora) < 0) {
- i++;
- }
- while (data[j].compareTo((T) opora) > 0) {
- j--;
- }
- if (i <= j) {
- var temp = data[i];
- data[i] = data[j];
- data[j] = temp;
- i++;
- j--;
- }
- }
- if (low < j) {
- quickSort(low, j);
- }
- if (high > i) {
- quickSort(i, high);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement