>백엔드 개발 >C++ >C에서 설명하는 병합 정렬 기술

C에서 설명하는 병합 정렬 기술

WBOY
WBOY앞으로
2023-09-05 14:05:051081검색

정렬은 요소를 오름차순(또는 내림차순)으로 정렬하는 프로세스입니다.

정렬 유형

C 언어는 다음과 같은 5가지 정렬 기술을 제공합니다. -

  • 버블 정렬(또는) 교환 정렬
  • 선택 정렬
  • 삽입 정렬(또는) 선형 정렬
  • 퀵 정렬(또는) 파티셔닝 스왑 정렬
  • 병합 정렬(또는) 외부 정렬

Merge Sort

Merge Sort는 분할 정복 방법입니다. 배열을 반으로 나누고 재귀적으로 이를 정복하고 병합(결합)합니다.

아래 예제를 살펴보겠습니다.

정렬되지 않은 배열을 가져와서 병합 정렬 기술을 적용하여 배열을 정렬합니다.

38, 27, 43, 3, 9, 82, 10

C에서 설명하는 병합 정렬 기술

이제 아래와 같이 정렬하여 배열을 결합합니다. -

C에서 설명하는 병합 정렬 기술

다음은 병합을 사용하여 요소를 정렬하는 C 프로그램입니다. 정렬 기술 -

라이브 데모

#include <stdio.h>
#define max 10
int a[11] = { 10, 14, 19, 26, 27, 31, 33, 35, 42, 44, 0 };
int b[10];
void merging(int low, int mid, int high) {
   int l1, l2, i;
   for(l1 = low, l2 = mid + 1, i = low; l1 <= mid && l2 <= high; i++) {
      if(a[l1] <= a[l2])
         b[i] = a[l1++];
      else
         b[i] = a[l2++];
   }
   while(l1 <= mid)
      b[i++] = a[l1++];
   while(l2 <= high)
      b[i++] = a[l2++];
   for(i = low; i <= high; i++)
      a[i] = b[i];
   }
   void sort(int low, int high) {
      int mid;
      if(low < high) {
         mid = (low + high) / 2;
         sort(low, mid);
         sort(mid+1, high);
         merging(low, mid, high);
      } else {
      return;
   }
}
int main() {
   int i;
   printf("List before sorting</p><p>");
   for(i = 0; i <= max; i++)
   printf("%d ", a[i]);
   sort(0, max);
   printf("</p><p>List after sorting</p><p>");
   for(i = 0; i <= max; i++)
   printf("%d ", a[i]);
}

출력

위 프로그램을 실행하면 다음 출력이 생성됩니다. -

List before sorting
10 14 19 26 27 31 33 35 42 44 0
List after sorting
0 10 14 19 26 27 31 33 35 42 44

위 내용은 C에서 설명하는 병합 정렬 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제