버블 정렬은 인접한 요소를 비교하여 데이터를 정렬하는 데 사용되는 가장 간단한 정렬 알고리즘 중 하나입니다. 모든 요소는 단계적으로 비교됩니다. 첫 번째 단계에서는 가장 큰 값을 끝에 배치하고, 두 번째 단계에서는 두 번째에서 마지막 위치에 두 번째로 큰 요소를 배치하는 방식으로 전체 목록이 정렬될 때까지 계속됩니다.
int arr[5]= { 5,4,2,1,3 };
int i, j ;
인덱스 i=0에서 i
인덱스 j=0에서 배열 크기 - i - 1
까지 트래버스합니다. arr[i]>arr[j] arr[i]를 arr[j]
로 교체합니다. 끝
배열 길이가 1이면 반환
배열을 한 번 순회하고 끝에 최대 요소를 수정합니다.p>
나머지 단계는 마지막 단계를 제외하고 재귀적으로 실행됩니다. 요소 Array
Input − Arr[] = {5,7,2,3, 1,4}; length=6
Output − 정렬된 배열: 1 2 3 4 5 7
Description −
First Pass 5 7 2 3 1 4 → swap → 5 2 7 3 1 4 5 2 7 3 1 4 → swap → 5 2 3 7 1 4 5 2 3 7 1 4 → swap → 5 2 3 1 7 4 5 2 3 1 7 4 → swap → 5 2 3 1 4 7 Second Pass 5 2 3 1 4 7 → swap → 2 5 3 1 4 7 2 5 3 1 4 7 → swap → 2 3 5 1 4 7 2 3 5 1 4 7 → swap → 2 3 1 5 4 7 2 3 1 5 4 7 → swap → 2 3 1 4 5 7 Third Pass 2 3 1 4 5 7 → swap → 2 1 3 4 5 7 2 1 3 4 5 7 no swap Fourth Pass 2 1 3 4 5 7 → swap → 1 2 3 4 5 7 1 2 3 4 5 7 no swap in further iterations
Input− Arr[] = { 1, 2, 3, 3, 2 };
Output− 정렬된 배열: 1 2 2 3 3
Description -
First Pass 1 2 3 3 2 → swap → 1 2 3 2 3 1 2 3 2 3 → swap → 1 2 2 3 3 1 2 2 3 3 no swap in further iterations Second Pass 1 2 2 3 3 no swap in further iterations
버블정렬의 재귀적 방법에서 기본 상황은 배열 길이 = 1입니다. 그렇지 않으면 단일 for 루프를 사용하여 배열을 반복하고 그에 따라 요소를 교체합니다.
입력 배열 Arr[]과 길이를 그 안에 있는 요소 수로 가져옵니다.
recurbublSort(int arr[], int len) 함수는 배열과 해당 길이를 가져오고 버블 정렬을 사용하여 배열을 재귀적으로 정렬합니다.
변수 temp를 가져옵니다.
배열 길이가 1이면 void가 반환됩니다.
그렇지 않으면 단일 for 루프를 사용하여 배열을 반복하고 각 요소에 대해 arr[i]>arr[i+1] 요소를 교체합니다.
temp=arr[i], arr[i]=arr[i+1] 및 arr[i+1]=temp를 설정합니다.
이전 루프가 가장 큰 요소를 마지막 위치에 배치했으므로 이제 길이를 1만큼 줄입니다.
recurbublSort(arr,len)을 재귀적으로 호출하세요.
모든 호출이 끝나면 len이 1이 되면 재귀를 종료하고 배열을 정렬합니다.
정렬된 배열을 메인에 인쇄하세요.
#include <stdio.h> void recurbublSort(int arr[], int len){ int temp; if (len == 1){ return; } for (int i=0; i<len-1; i++){ if (arr[i] > arr[i+1]){ temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } len=len-1; recurbublSort(arr, len); } int main(){ int Arr[] = {21, 34, 20, 31, 78, 43, 66}; int length = sizeof(Arr)/sizeof(Arr[0]); recurbublSort(Arr, length); printf("Sorted array : "); for(int i=0;i<length;i++){ printf("%d ",Arr[i]); } return 0; }
위 코드를 실행하면 다음과 같은 출력이 생성됩니다
Sorted array: 20 21 31 34 43 66 78
위 내용은 재귀 버블 정렬을 위한 C 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!