Java에서 QuickSort를 구현하는 방법?



이 기사에서는 QuickSort In Java 인 또 다른 Divide And Conquer Sorting Algorithm을 소개하고 데모를 따라갑니다.

QuickSort는 분할 및 정복 알고리즘입니다. Divide & Conquer 알고리즘 설계 패러다임에서는 하위 문제의 문제를 반복적으로 분할 한 다음 하위 문제를 해결하고 마침내 솔루션을 결합하여 최종 결과를 찾습니다. 이 기사에서는 QuickSort In에 초점을 맞출 것입니다.

이 기사에서는 다음 사항을 다룰 것입니다.





의 시작하자!

문제를 하위 문제로 나눌 때 염두에 두어야 할 한 가지는 하위 문제의 구조가 원래 문제에서 변경되지 않는다는 것입니다.
Divide & Conquer 알고리즘에는 3 단계가 있습니다.



  • 나누기 : 문제를 하위 문제로 나누기
  • 정복 : 하위 문제를 재귀 적으로 해결
  • 결합 : 솔루션을 결합하여 최종 결과를 얻습니다.

Java- Edureka의 이미지-빠른 정렬

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)}}

산출:

출력-자바의 빠른 정렬-Edureka

이제 위의 Java 프로그램을 실행 한 후 QuickSort의 작동 방식과 Java에서 구현하는 방법을 이해했을 것입니다.따라서 우리는 '자바의 Quicksort'에 대한이 기사의 끝까지 왔습니다. 더 자세히 알고 싶다면체크 아웃 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 제공합니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.