>백엔드 개발 >C++ >재귀 버블 정렬을 위한 C 프로그램

재귀 버블 정렬을 위한 C 프로그램

WBOY
WBOY앞으로
2023-09-15 20:49:021207검색

재귀 버블 정렬을 위한 C 프로그램

버블 정렬은 인접한 요소를 비교하여 데이터를 정렬하는 데 사용되는 가장 간단한 정렬 알고리즘 중 하나입니다. 모든 요소는 단계적으로 비교됩니다. 첫 번째 단계에서는 가장 큰 값을 끝에 배치하고, 두 번째 단계에서는 두 번째에서 마지막 위치에 두 번째로 큰 요소를 배치하는 방식으로 전체 목록이 정렬될 때까지 계속됩니다.

버블 정렬 알고리즘

  • 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

Example

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;
}

Output

위 코드를 실행하면 다음과 같은 출력이 생성됩니다

Sorted array: 20 21 31 34 43 66 78

위 내용은 재귀 버블 정렬을 위한 C 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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