Java의 병합 정렬 프로그램: 병합 정렬과 퀵소트의 차이점

게시 됨: 2021-05-25

목차

JAVA의 병합 정렬 프로그램 소개

이름에서 알 수 있듯이 JAVA의 병합 정렬 프로그램은 정렬 알고리즘입니다. JAVA의 분할 정복 알고리즘으로 고전적으로 개념화되었습니다. Java의 병합 정렬 프로그램은 입력 배열을 두 개 이상의 구성 하위 문제로 재귀적으로 분해하여 직접 해결할 수 있을 만큼 간단해질 때까지 작동합니다.

구성하는 하위 문제는 상위 문제와 유사하거나 다소 관련될 수 있습니다. 그런 다음 각 하위 문제에 대한 개별 솔루션을 결합하여 원래의 상위 문제에 대한 솔루션을 얻습니다.

Java의 병합 정렬 프로그램은 어떻게 작동합니까?

앞서 반복했듯이 JAVA의 병합 정렬 프로그램은 분할 정복 알고리즘입니다. 이는 배열 요소가 정렬 프로세스 전반에 걸쳐 서로에 대해 원래 위치를 유지함을 의미하는 안정적인 정렬입니다.

  • 나누기: 이 단계에서 입력 배열은 두 개의 구성 요소로 나뉩니다. 이 단계는 더 이상 나눌 절반 어레이가 없을 때까지 모든 결과 절반 어레이에 대해 계속 반복됩니다.
  • 정복: 이 단계에서는 분할된 배열을 아래쪽에서 위쪽으로 정렬하고 병합하여 최종 정렬된 배열에 도달합니다.

Java의 퀵 정렬과 병합 정렬 프로그램의 차이점 - 2020 - 다른 사람

기능적으로 유사하지만 JAVA에서 quicksort와 mergesort의 근본적인 차이점에 적절한 강조가 있어야 합니다.

  • 메커니즘 : Quicksort는 내부 내부 정렬 알고리즘인 반면 mergesort는 외부 외부 정렬 알고리즘입니다. 퀵 정렬에서 요소는 피벗으로 알려진 핵심 요소를 기준으로 정렬됩니다. 피벗은 일반적으로 입력 배열의 중간 값입니다. 피벗보다 값이 작은 요소는 피벗의 왼쪽으로 푸시되고 값이 큰 요소는 피벗의 오른쪽으로 푸시됩니다. 여기서 왼쪽을 왼쪽 칸막이, 오른쪽 칸을 오른쪽 칸막이라고 한다. 반대로 mergesort는 하나의 요소만 남을 때까지 반복적으로 배열을 두 개의 하위 배열(n/2)로 분할합니다. 그런 다음 하위 배열을 결합하여 정렬된 배열을 형성합니다.
  • 적용: 퀵정렬은 작은 배열에 적합하지만 mergesort는 크기에 관계없이 모든 배열에서 작동합니다.
  • 속도 : 퀵정렬의 경우 데이터셋이 작을수록 알고리즘이 빨라집니다. 반면에 Mergesort는 모든 데이터 세트에 대해 일관된 속도로 작동합니다.
  • 공간 요구 사항 및 메모리 사용량: 앞서 언급했듯이 mergesort는 외부의 잘못된 정렬 알고리즘입니다. 공간 복잡도는 O(n)입니다. 따라서 보조 배열을 정렬하기 위해서는 (O(n))의 추가 저장이 필요하다.

또한 읽기: 예제가 있는 Java의 리터럴 유형

JAVA 병합 정렬 프로그램의 시간 복잡도 분석

JAVA의 병합 정렬 프로그램은 O(n*log n)의 시간 복잡도를 갖습니다. Binary Search에 따르면 모든 단계에서 숫자를 반으로 나눌 때마다 로그 함수 'log n'으로 나타낼 수 있습니다. 단계 수(최대)는 log n +1로 나타낼 수 있습니다. 모든 하위 배열의 중간은 O(1)입니다.

따라서 하위 배열을 병합하려면 O(n)의 실행 시간이 필요합니다. 따라서 JAVA에서 병합 정렬 프로그램의 총 시간은 n(log n +1)이 됩니다. 병합 정렬은 항상 두 개의 반쪽을 병합하는 데 선형 시간이 걸리므로 이는 세 가지 경우(최악, 평균 및 최고) 모두에서 O(n*log n)의 시간 복잡도에 해당합니다.

세계 최고의 대학에서 온라인으로 소프트웨어 과정을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

합산

인간을 위한 정렬된 데이터가 논리적으로 건전하고 이해하기 쉬운 것처럼 정렬된 배열은 컴퓨터에서 작업하기 더 쉽게 관리할 수 있습니다. 이것이 JAVA의 병합 정렬 프로그램이 유리한 곳입니다. 효율적인 범용 비교 기반 정렬 알고리즘입니다.

Java, 전체 스택 소프트웨어 개발에 대해 자세히 알아보려면 작업 전문가를 위해 설계되었으며 9+ 시간의 엄격한 교육을 제공하는 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 Executive PG 프로그램을 확인하십시오. 프로젝트 및 과제, IIIT-B 동문 상태, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

프로그래밍에서 정렬이란?

정렬은 개체를 특정 순서로 배치하는 기술입니다. 이는 일반적으로 관리하기 쉽게 만들거나 액세스하기 쉽게 만들기 위해 수행됩니다. 컴퓨터 과학에는 데이터 구조에 대한 정렬 알고리즘이 있습니다. 이러한 정렬 알고리즘은 두 가지 범주로 나눌 수 있습니다. 하나는 비교 기반 정렬 알고리즘이고 다른 하나는 삽입 기반 정렬 알고리즘입니다. 비교 기반 정렬 알고리즘에서 요소는 일치하는 정렬 키를 찾기 위해 다른 요소와 비교됩니다. 삽입 기반 정렬 알고리즘에서는 새로운 요소가 배열의 맨 앞에 추가되고 끝에 있는 요소가 처음으로 이동합니다.

프로그래밍에서 정렬 알고리즘의 유형은 무엇입니까?

정렬 알고리즘은 주로 순차 정렬, 병렬 정렬, 분할 정렬의 3가지 유형으로 분류됩니다. 순차 정렬이 가장 이해하기 쉽습니다. 머리 속에서 분류할 때 사용하는 것입니다. 모든 것이 작은 것부터 큰 것 순으로 정렬됩니다. 가장 일반적인 순차 정렬 알고리즘은 삽입 정렬, 버블 정렬, 빠른 정렬 및 병합 정렬입니다. 이러한 모든 정렬 알고리즘은 쉽게 병렬화할 수 있습니다. 병렬 정렬의 경우 각 작업은 이전 작업의 결과에 따라 다릅니다. 따라서 출력 순서가 보장되지 않습니다. 사용되는 두 가지 병렬 정렬 알고리즘은 토폴로지 정렬과 상향식 병합 정렬입니다. 분할 정렬 알고리즘은 입력 배열을 분할하여 각 하위 배열을 개별적으로 정렬할 수 있도록 합니다. 분할 정렬 알고리즘에는 이진 검색, 연결, 힙 정렬 및 기수 정렬이 포함됩니다.

병합 정렬과 빠른 정렬의 차이점은 무엇입니까?

병합 정렬은 분할 정복 알고리즘입니다. 일부 피벗 항목을 기반으로 목록을 두 개의 파티션으로 나누고 각 파티션을 재귀적으로 정렬한 다음 출력을 병합합니다. 병합 단계는 병렬 병합 정렬로 수행할 수 있습니다. 빠른 정렬은 O(nlogn) 정렬 알고리즘입니다. 훨씬 간단한 알고리즘이지만 매번 임의의 배열 요소에서 피벗해야 합니다.