0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: java, элемент, массив, быстрая сортировка, метод, quick sort, подмассив</p>
1
<p>Теги: java, элемент, массив, быстрая сортировка, метод, quick sort, подмассив</p>
2
<p><strong>Быстрая сортировка</strong>является одной из наиболее эффективных из существующих в<strong>Java</strong>. В её основе лежит рекурсивный алгоритм<strong>Quick sort</strong>. В среднем сортировка в Java выполняется за время O(n logn), причём точная скорость зависит от выбора опорного элемента.</p>
2
<p><strong>Быстрая сортировка</strong>является одной из наиболее эффективных из существующих в<strong>Java</strong>. В её основе лежит рекурсивный алгоритм<strong>Quick sort</strong>. В среднем сортировка в Java выполняется за время O(n logn), причём точная скорость зависит от выбора опорного элемента.</p>
3
<p>Принято считать, что алгоритм быстрой сортировки Quick sort использует известную стратегию "разделяй и властвуй". Речь идёт о том, чтобы разбивать задачу на подзадачи до той поры, пока перед нами не будет элементарная единица. В нашем случае массив делится на несколько массивов, а каждый из них сортируется отдельно, а потом объединяется в один массив.</p>
3
<p>Принято считать, что алгоритм быстрой сортировки Quick sort использует известную стратегию "разделяй и властвуй". Речь идёт о том, чтобы разбивать задачу на подзадачи до той поры, пока перед нами не будет элементарная единица. В нашем случае массив делится на несколько массивов, а каждый из них сортируется отдельно, а потом объединяется в один массив.</p>
4
<h2>Как работает быстрая сортировка в Java</h2>
4
<h2>Как работает быстрая сортировка в Java</h2>
5
<p>Пошаговое описание алгоритма сортировки: 1.Выбираем опорный элемент из массива. Как правило, это средний элемент. 2.Делим массив на 2 подмассива. Элементы, которые меньше опорного, и элементы, которые больше опорного. 3.Рекурсивно применяем сортировку к обоим подмассивам.</p>
5
<p>Пошаговое описание алгоритма сортировки: 1.Выбираем опорный элемент из массива. Как правило, это средний элемент. 2.Делим массив на 2 подмассива. Элементы, которые меньше опорного, и элементы, которые больше опорного. 3.Рекурсивно применяем сортировку к обоим подмассивам.</p>
6
<p>В результате массивы будут делиться до тех пор, пока не останется один элемент, который потом отсортируется. Для наглядности смотрим анимацию и картинки ниже:</p>
6
<p>В результате массивы будут делиться до тех пор, пока не останется один элемент, который потом отсортируется. Для наглядности смотрим анимацию и картинки ниже:</p>
7
<h2>Анализ алгоритма быстрой сортировки</h2>
7
<h2>Анализ алгоритма быстрой сортировки</h2>
8
<p>Исходный массив: Выбираем опорный компонет, берём 3: Теперь разобьём массив на подмассивы: те, что больше трёх и те, что меньше: То же сделаем с левым подмассивом: Выбираем опорный элемент: Разбиваем на подмассивы: Выбираем опорный компонент и выполняем разбиение на подмассивы. Проделываем это, пока в подмассиве не останется один элемент. Левая часть отсортирована. То же делается и для правой части, начиная от опорного элемента 3.</p>
8
<p>Исходный массив: Выбираем опорный компонет, берём 3: Теперь разобьём массив на подмассивы: те, что больше трёх и те, что меньше: То же сделаем с левым подмассивом: Выбираем опорный элемент: Разбиваем на подмассивы: Выбираем опорный компонент и выполняем разбиение на подмассивы. Проделываем это, пока в подмассиве не останется один элемент. Левая часть отсортирована. То же делается и для правой части, начиная от опорного элемента 3.</p>
9
<p>Что же, осталось реализовать java-код.</p>
9
<p>Что же, осталось реализовать java-код.</p>
10
import java.util.Arrays; public class QuickSort { public static void quickSort(int[] array, int low, inthigh) { if (array.length == 0) return;//завершить выполнение, если длина массива равна 0 if (low >= high) return;//завершить выполнение если уже нечего делить // выбрать опорный элемент int middle = low + (high - low) / 2; int opora = array[middle]; // разделить на подмассивы, который больше и меньше опорного элемента int i = low, j = high; while (i <= j) { while (array[i] < opora) { i++; } while (array[j] > opora) { j--; } if (i <= j) {//меняем местами int temp = array[i]; array[i] = array[j]; array[j] = temp; i++; j--; } } // вызов рекурсии для сортировки левой и правой части if (low < j) quickSort(array, low, j); if (high > i) quickSort(array, i, high); } public static void main(String[] args) { int[] x = { 8, 0, 4, 7, 3, 7, 10, 12, -3 }; System.out.println("Было"); System.out.println(Arrays.toString(x)); int low = 0; int high = x.length - 1; quickSort(x, low, high); System.out.println("Стало"); System.out.println(Arrays.toString(x)); } }<p>Мы рассмотрели алгоритм, благодаря которому реализуется быстрая сортировка в Java. В заключение скажем, что<strong>Quick sort</strong>- это действительно эффективный способ, идеально подходящий даже для сортировки больших массивов.</p>
10
import java.util.Arrays; public class QuickSort { public static void quickSort(int[] array, int low, inthigh) { if (array.length == 0) return;//завершить выполнение, если длина массива равна 0 if (low >= high) return;//завершить выполнение если уже нечего делить // выбрать опорный элемент int middle = low + (high - low) / 2; int opora = array[middle]; // разделить на подмассивы, который больше и меньше опорного элемента int i = low, j = high; while (i <= j) { while (array[i] < opora) { i++; } while (array[j] > opora) { j--; } if (i <= j) {//меняем местами int temp = array[i]; array[i] = array[j]; array[j] = temp; i++; j--; } } // вызов рекурсии для сортировки левой и правой части if (low < j) quickSort(array, low, j); if (high > i) quickSort(array, i, high); } public static void main(String[] args) { int[] x = { 8, 0, 4, 7, 3, 7, 10, 12, -3 }; System.out.println("Было"); System.out.println(Arrays.toString(x)); int low = 0; int high = x.length - 1; quickSort(x, low, high); System.out.println("Стало"); System.out.println(Arrays.toString(x)); } }<p>Мы рассмотрели алгоритм, благодаря которому реализуется быстрая сортировка в Java. В заключение скажем, что<strong>Quick sort</strong>- это действительно эффективный способ, идеально подходящий даже для сортировки больших массивов.</p>
11
<p>Хотите узнать о Java-программировании больше? Записывайтесь на наш<a>курс "Разработчик Java"</a>!</p>
11
<p>Хотите узнать о Java-программировании больше? Записывайтесь на наш<a>курс "Разработчик Java"</a>!</p>
12
12