Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 언어의 정렬 기술 설명

<시간/>

문제

C 언어의 다양한 정렬 기술은 무엇입니까? 예를 들어 하나의 정렬 기술을 설명하십시오.

해결책

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

  • 버블 정렬(또는) 교환 정렬.
  • 선택 정렬.
  • 삽입 정렬(또는) 선형 정렬.
  • 빠른 정렬(또는) 파티션 교환 정렬
  • 병합 정렬(또는) 외부 정렬

거품 정렬

교환 정렬이라고도 하는 가장 간단한 정렬 기술입니다.

절차

  • 첫 번째 요소와 목록의 나머지 요소를 비교하고 순서가 맞지 않으면 교환(교체)합니다.

  • 모든 요소가 정렬될 때까지 목록의 다른 요소에 대해 동일한 작업을 반복합니다.

30 50 40 10 20

아래 주어진 요소를 고려하십시오 -

C 언어의 정렬 기술 설명

첫 번째 패스

첫 번째 요소를 나머지 요소와 비교합니다.

a[0]> a[1] $\square$ $\square$30>50 (F) $\square$ $\square$교환 없음

a[0]> a[2] $\square$ $\square$ 30>40 (F) $\square$ $\square$ 교환 없음

a[0]> a[3] $\square$ $\square$ 30>10 (T) $\square$ $\square$ 교환

a[0]> a[4] $\square$ $\square$ 10>20 (F) $\square$ $\square$ 교환 없음

10 50 40 30 20

두 번째 패스

두 번째 요소를 나머지 요소와 비교합니다.

C 언어의 정렬 기술 설명

a[1]> a[2] $\square$ $\square$ 50>40 (T) $\square$ $\square$ 교환

a[1]> a[3] $\square$ $\square$ 40>30 (T) $\square$ $\square$ 교환

a[1]> a[4] $\square$ $\square$ 30>20 (T) $\square$ $\square$ 교환

10 20 50 40 30

세 번째 패스

세 번째 요소를 나머지 요소와 비교합니다.

C 언어의 정렬 기술 설명

a[2]> a[3] $\square$ $\square$ 50>40 (T) $\square$ $\square$ 교환

a[2]> a[4] $\square$ $\square$ 40>30 (T) $\square$ $\square$ 교환

10 20 30 50 40

네 번째 패스

네 번째 요소를 나머지 요소와 비교합니다.

C 언어의 정렬 기술 설명

a[3]> a[4] $\square$ $\square$ 50>40 (T) $\square$ $\square$ 교환

10 20 30 40 50

절차

아래에 주어진 버블 정렬 절차를 참조하십시오 -

for (i=0; i<n-1; i++){
   for (j=i+1; j<n; j++){
      if (a[i] > a[j]){
         t=a[i];
         a[i] = a[j];
         a[j] = t;
      }
   }
}

예시

다음은 버블 정렬 기술을 위한 C 프로그램입니다 -

#include<stdio.h>
int main(){
   int a[50], i,j,n,t;
   printf("enter the No: of elements in the list:\n");
   scanf("%d", &n);
   printf("enter the elements:\n");
   for(i=0; i<n; i++){
      scanf ("%d", &a[i]);
   }
   printf("Before bubble sorting the elements are:\n");
   for(i=0; i<n; i++)
      printf("%d \t\n", a[i]);
   for (i=0; i<n-1; i++){
      for (j=i+1; j<n; j++){
         if (a[i] > a[j]){
            t = a[i];
            a[i] = a[j];
            a[j] = t;
         }
      }
   }
   printf ("after bubble sorting the elements are:\n");
   for (i=0; i<n; i++)
      printf("%d\t", a[i]);
   return 0;
}

출력

위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -

enter the No: of elements in the list:
5
enter the elements:
12 11 45 26 67
Before bubble sorting the elements are:
12
11
45
26
67
after bubble sorting the elements are:
11 12 26 45 67