파티션 교환 정렬이라고도 알려진 Java의 빠른 정렬은 분할 정복 정렬 알고리즘입니다. 퀵 정렬은 분할 및 정복 특성으로 인해 CPU 캐시를 가장 잘 사용하는 알고리즘의 좋은 예입니다. Quicksort 알고리즘은 특히 큰 목록을 정렬하는 데 가장 많이 사용되는 정렬 알고리즘 중 하나이며 대부분의 프로그래밍 언어에서 이를 구현했습니다. Quicksort 알고리즘은 원본 데이터를 개별적으로 정렬한 다음 병합하여 정렬된 데이터를 생성하는 두 부분으로 나눕니다.
무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
빠른 정렬을 사용하여 {8, 6, 3, 4, 9, 2, 1, 7} 배열을 정렬해야 한다고 가정해 보겠습니다.
1. 배열에서 피벗이라는 요소를 선택합니다. 일반적으로 중간 요소가 피벗으로 선택됩니다. 4를 피벗으로 삼겠습니다.
2. 피벗보다 작은 요소가 피벗 앞에 오고 피벗보다 큰 요소가 피벗 뒤에 나타나도록 배열을 두 부분으로 다시 정렬합니다. 다음 단계를 따릅니다:
3. 왼쪽 하위 배열(피벗보다 작은 요소가 있는 배열)과 오른쪽 하위 배열(피벗보다 많은 요소가 있는 배열)에 대해 1단계와 2단계를 반복적으로 적용합니다. 배열에 요소가 1개 또는 0개만 포함된 경우 배열은 분류된 것으로 간주됩니다.
다음은 빠른 정렬 알고리즘을 사용하여 정수 배열을 정렬하는 Java 프로그램입니다.
코드:
import java.lang.*; import java.util.*; public class Main { private int array[]; private int length; public void sort(int[] inputArrayArr) { if (inputArrayArr == null || inputArrayArr.length == 0) { return; } this.array = inputArrayArr; length = inputArrayArr.length; performQuickSort(0, length - 1); } private void performQuickSort(int lowerIndex, int higherIndex) { int i = lowerIndex; int j = higherIndex; // calculate pivot number // middle element taken as pivot int pivot = array[lowerIndex+(higherIndex-lowerIndex)/2]; // Divide into two subarrays while (i <= j) { /** * In each iteration, find an element from left side of the pivot which * is greater than the pivot value, and also find an element * From right side of the pivot which is less than the pivot value. Once the search * is complete, we exchange both elements. */ while (array[i] < pivot) { i++; } while (array[j] > pivot) { j--; } if (i <= j) { swapNumbers(i, j); //move index to next position on both sides i++; j--; } } // call performQuickSort() method recursively if (lowerIndex < j) performQuickSort(lowerIndex, j); if (i < higherIndex) performQuickSort(i, higherIndex); } private void swapNumbers(int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } public static void main(String args[]){ Main quickSort = new Main(); int[] inputArray = {8,6,3,4,9,2,1,7}; quickSort.sort(inputArray); System.out.println("Sorted Array " + Arrays.toString(inputArray)); } }
출력:
퀵 정렬 알고리즘의 장점은 다음과 같습니다.
Quicksort는 분할 정복 원칙에 따라 작동하는 빠른 꼬리 재귀 알고리즘입니다. 최고, 평균, 최악의 경우에 대한 복잡성 분석은 다음과 같습니다.
Java에서는 배열. Sort() 메소드는 빠른 정렬 알고리즘을 사용하여 배열을 정렬합니다.
위 내용은 Java의 빠른 정렬 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!