QuickSort는 분할 및 정복 알고리즘입니다. Divide & Conquer 알고리즘 설계 패러다임에서는 하위 문제의 문제를 반복적으로 분할 한 다음 하위 문제를 해결하고 마침내 솔루션을 결합하여 최종 결과를 찾습니다. 이 기사에서는 QuickSort In에 초점을 맞출 것입니다.
이 기사에서는 다음 사항을 다룰 것입니다.
의 시작하자!
문제를 하위 문제로 나눌 때 염두에 두어야 할 한 가지는 하위 문제의 구조가 원래 문제에서 변경되지 않는다는 것입니다.
Divide & Conquer 알고리즘에는 3 단계가 있습니다.
- 나누기 : 문제를 하위 문제로 나누기
- 정복 : 하위 문제를 재귀 적으로 해결
- 결합 : 솔루션을 결합하여 최종 결과를 얻습니다.
SQL Server 통합 서비스 ssis 단계별 자습서
분할 및 정복 패러다임을 기반으로하는 다양한 알고리즘이 있습니다. 빠른 정렬 및 병합 정렬이 그중 하나입니다.
QuickSort의 최악의 경우 시간 복잡도는 Merge Sort 및 Heap Sort와 같은 다른 많은 정렬 알고리즘보다 많은 O (n2)이지만, QuickSort는 내부 루프가 대부분의 아키텍처에서 효율적으로 구현 될 수 있기 때문에 실제로 더 빠릅니다. 실제 데이터.
빠른 정렬 알고리즘의 구현에 대해 이야기하겠습니다. Quicksort 알고리즘은 피벗 요소를 가져와 피벗 요소를 중심으로 배열을 분할합니다. 피벗 요소를 선택하는 방법에 따라 Quicksot의 다양한 변형이 있습니다. 피벗 요소를 선택하는 방법에는 여러 가지가 있습니다.
- 첫 번째 요소 선택
- 마지막 요소 선택
- 무작위 요소 선택
- 중앙값 선택
다음으로 이해해야 할 중요한 것은 빠른 정렬 알고리즘의 partition () 함수입니다. 피벗 요소를 가져 와서 오른쪽 위치에 배치하는 분할 함수는 피벗 요소보다 작은 모든 요소를 왼쪽으로, 모든 요소는 오른쪽으로 이동합니다. Quicksort를 사용하려면 선형 시간이 걸립니다.
그런 다음 배열은 피벗 요소 (즉, 피벗보다 작은 요소와 피벗보다 큰 요소)에서 두 부분으로 나뉘며 두 배열은 모두 Quicksort 알고리즘을 사용하여 재귀 적으로 정렬됩니다.
이제 QuickSort 알고리즘의 작동을 이해했습니다. Java에서 Quicksort 알고리즘을 구현하는 방법을 이해하겠습니다.
QuickSort 함수:
/ * Quicksort 함수는 배열이 가장 낮은 인덱스와 가장 높은 인덱스로 정렬되어야합니다 * /
void sort (int arr [], int lowIndex, int highIndex) {// lowIndex = highIndex까지 if (lowIndex이제 어떻게 작동하는지 이해하기 위해 파티셔닝 코드를 살펴 보겠습니다.
분할 암호
파티셔닝 코드에서 마지막 요소를 피벗 요소로 선택합니다. 전체 배열을 순회합니다 (즉, 우리의 경우 변수 j 사용). 배열에서 가장 작은 마지막 요소를 추적합니다 (즉, 우리의 경우 변수 i 사용). 피벗보다 작은 요소를 찾으면 현재 요소 a [j]를 arr [i]로 이동합니다. 그렇지 않으면 계속 횡단합니다.
int partition (int arr [], int lowIndex, int highIndex) {// 마지막 요소를 피벗으로 만들기 int pivot = arr [highIndex] // i를 사용하여 피벗에서 더 작은 요소 추적 int i = (lowIndex-1) for (int j = lowIndex j이제 Quicksort 및 파티션 기능을 이해 했으므로 전체 코드를 간단히 살펴 보겠습니다.
QuickSort 자바 코드
class QuickSort {// 파티션 방법 int partition (int arr [], int lowIndex, int highIndex) {int pivot = arr [highIndex] int i = (lowIndex-1) for (int j = lowIndex j// 정렬 방법
void sort (int arr [], int lowIndex, int highIndex) {if (lowIndex// 배열을 인쇄하는 방법
static void printArray (int arr []) {int n = arr.length for (int i = 0 i// 주요 방법
public static void main (String args []) {int arr [] = {101, 37, 68, 29, 11, 5} int n = arr.length QuickSort ob = new QuickSort () ob.sort (arr, 0, n-1) System.out.println ( 'sorted array') printArray (arr)}}산출:
이제 위의 Java 프로그램을 실행 한 후 QuickSort의 작동 방식과 Java에서 구현하는 방법을 이해했을 것입니다.따라서 우리는 '자바의 Quicksort'에 대한이 기사의 끝까지 왔습니다. 더 자세히 알고 싶다면체크 아웃 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 제공합니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념에 대해 교육하도록 설계되었습니다.
질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.