[데이터 구조] - 내부 정렬 (병합 정렬)
[설명] 다음 코드 는 최종 적 으로 증가 서열, 즉 작은 것 에서 큰 것 으로 정렬 된다.
1. 헤더 파일 및 형식 정의
#include<stdio.h>
#include<stdlib.h>
#define ElemType int //
#define LEN 7 //
2. 함수 선언
/* */
void Merge(ElemType A[], int low, int mid, int high); //1.
void MergeSort(ElemType A[], int low, int high); //2.
void Print(ElemType A[], int len); //3.
3. 기본 조작
3.1 병합
//1.
ElemType* B = (ElemType*)malloc((LEN) * sizeof(ElemType)); // B
void Merge(ElemType A[], int low, int mid, int high) {
// A A[low...mid] A[mid+1...high] ,
int i, j, k;
for (k = low; k <= high; k++)
B[k] = A[k]; // A B
for (i = low, j = mid + 1, k = i; i <= mid && j <= high; k++) {
if (B[i] <= B[j]) // B
A[k] = B[i++]; // A
else
A[k] = B[j++];
}//for
while (i <= mid)
A[k++] = B[i++]; // ,
while (j <= high)
A[k++] = B[j++]; // ,
}
3.2 주요 과정
//2.
void MergeSort(ElemType A[], int low, int high) {
if (low < high) {
int mid = (low + high) / 2; //
MergeSort(A, low, mid); //
MergeSort(A, mid + 1, high); //
Merge(A, low, mid, high); //
}
}
3.3 출력
//3.
void Print(ElemType A[], int len) {
for (int i = 0; i < len; i++)
printf("%d\t", A[i]);
printf("%
");
}
4. main 함수
int main() {
ElemType A[] = {49,38,65,97,76,13,27};
MergeSort(A, 0, LEN-1);
Print(A, LEN);
return 0;
}
5. 소결
1. 병합 의 개념
2. 병합 정렬 에 대한 성능 분석
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.