desant74268

qSort

Jan 9th, 2022
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.66 KB | None | 0 0
  1. package ru.itsjava.sorting;
  2.  
  3. import java.util.Arrays;
  4.  
  5. public class QuickSort {
  6.     public static void main(String[] args) {
  7.  
  8.         int[] arr = new int[]{9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
  9.  
  10.         System.out.println("Исходный: " + Arrays.toString(arr));
  11.         qsort(arr,0, arr.length-1);
  12.         System.out.println("Отсортированный: " + Arrays.toString(arr));
  13.     }
  14.  
  15.     private static void qsort(int[] arr, int begin, int end) {
  16.         if (arr.length == 0)
  17.             return;//завершить выполнение если длина массива равна 0
  18.  
  19.         if (begin >= end)
  20.             return;//завершить выполнение если уже нечего делить
  21.  
  22.         // выбрать опорный элемент
  23.         int middle = begin + (end - begin) / 2;
  24.         int pivot = arr[middle];
  25.  
  26.         // разделить на подмассивы, который больше и меньше опорного элемента
  27.         int i = begin, j = end;
  28.         while (i <= j) {
  29.             while (arr[i] < pivot) {
  30.                 i++;
  31.             }
  32.  
  33.             while (arr[j] > pivot) {
  34.                 j--;
  35.             }
  36.  
  37.             if (i <= j) {//меняем местами
  38.                 int temp = arr[i];
  39.                 arr[i] = arr[j];
  40.                 arr[j] = temp;
  41.                 i++;
  42.                 j--;
  43.             }
  44.         }
  45.  
  46.         // вызов рекурсии для сортировки левой и правой части
  47.         if (begin < j)
  48.             qsort(arr, begin, j);
  49.  
  50.         if (end > i)
  51.             qsort(arr, i, end);
  52.     }
  53.  
  54. }
  55.  
Add Comment
Please, Sign In to add comment