[데이터 구조] - 내부 정렬 (교환 정렬)
[설명] 다음 코드 는 최종 적 으로 증가 서열, 즉 작은 것 에서 큰 것 으로 정렬 된다.
1. 헤더 파일 및 형식 정의
#include<stdio.h>
#define ElemType int
2. 함수 선언
/* */
void swap(int& a, int& b); //1-1.
void BubbleSort(ElemType A[], int n); //1-2.
int Partition(ElemType A[], int low, int high); //2-1.
void QuickSort(ElemType A[], int low, int high); //2-2.
3. 기본 조작
3.1 거품 정렬
3.1.1 교환
//1-1.
void swap(int& a, int& b) { // ,
int temp = a;
a = b;
b = temp;
}
3.1.2 거품 발생 주 과정
//1-2.
void BubbleSort(ElemType A[], int n) {
for (int i = 0; i < n - 1; i++) { // , n-1
bool flag = false; //
for (int j = n - 1; j > i; j--) //
if (A[j - 1] > A[j]) { //
swap(A[j - 1], A[j]); //
flag = true; // ,
}
if (flag == false)
return; // , ,
}
}
3.2 빠 른 정렬
3.2.1 구분
//2-1.
int Partition(ElemType A[], int low, int high) { //
ElemType pivot = A[low]; //
while (low < high) { // low high
while (low < high && A[high] >= pivot)
high--;
A[low] = A[high]; //
while (low < high && A[low] <= pivot)
low++;
A[high] = A[low]; //
}
A[low] = pivot; //
return low; //
}
3.2.2 빠 른 배출 과정
//2-2.
void QuickSort(ElemType A[], int low, int high) {
if (low < high) { //
int pivotpos = Partition(A, low, high); //
QuickSort(A, low, pivotpos - 1); //
QuickSort(A, pivotpos + 1, high);
}
}
4. main 함수
int main() {
//1.
ElemType A[] = { 10,9,8,7,6,5,4,3,2,1 };
BubbleSort(A, 10);
for (int i = 0; i < 10; i++)
printf("%d\t", A[i]);
printf("
");
//2.
ElemType B[] = { 10,9,8,7,6,5,4,3,2,1 };
QuickSort(B, 0, 9);
for (int i = 0; i < 10; i++)
printf("%d\t", B[i]);
return 0;
}
5. 소결
1. 교환 정렬 의 개념
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.