fork(1) download
  1. import java.util.Arrays;
  2.  
  3. class QuickSort {
  4.  
  5. public static void quickSort(int[] array, int low, int high) {
  6. if (array.length == 0)
  7. return;//завершить выполнение если длина массива равна 0
  8.  
  9. if (low >= high)
  10. return;//завершить выполнение если уже нечего делить
  11.  
  12. // выбрать опорный элемент
  13. int middle = low + (high - low) / 2;
  14. int opora = array[middle];
  15.  
  16. // разделить на подмассивы, который больше и меньше опорного элемента
  17. int i = low, j = high;
  18. while (i <= j) {
  19. while (array[i] < opora) {
  20. i++;
  21. }
  22.  
  23. while (array[j] > opora) {
  24. j--;
  25. }
  26.  
  27. if (i <= j) {//меняем местами
  28. int temp = array[i];
  29. array[i] = array[j];
  30. array[j] = temp;
  31. i++;
  32. j--;
  33. }
  34. }
  35.  
  36. // вызов рекурсии для сортировки левой и правой части
  37. if (low < j)
  38. quickSort(array, low, j);
  39.  
  40. if (high > i)
  41. quickSort(array, i, high);
  42. }
  43. public static void main(String[] args) {
  44. int[] x = { 8, 0, 4, 7, 3, 7, 10, 12, -3 };
  45. System.out.println("Было");
  46. System.out.println(Arrays.toString(x));
  47.  
  48. int low = 0;
  49. int high = x.length - 1;
  50.  
  51. quickSort(x, low, high);
  52. System.out.println("Стало");
  53. System.out.println(Arrays.toString(x));
  54. }
  55. }
Success #stdin #stdout 0.08s 47248KB
stdin
Standard input is empty
stdout
Было
[8, 0, 4, 7, 3, 7, 10, 12, -3]
Стало
[-3, 0, 3, 4, 7, 7, 8, 10, 12]