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

C 언어의 빠른 정렬 기술을 설명합니다.

<시간/>

정렬은 요소를 오름차순(또는 내림차순)으로 정렬하는 과정입니다.

정렬 유형

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

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

빠른 정렬

분할 정복 알고리즘입니다.

  • 1단계 - 배열에서 요소를 선택하고 그것을 피벗 요소라고 합니다.
  • 2단계 - 정렬되지 않은 배열 요소를 두 개의 배열로 나눕니다.
  • 3단계 - 피벗 요소보다 작은 값이 첫 번째 하위 배열 아래에 오면 피벗보다 큰 값을 가진 나머지 요소가 두 번째 하위 배열에 옵니다.

아래 주어진 예를 고려하십시오. 여기서

  • P는 피벗 요소입니다.
  • L은 왼쪽 포인터입니다.
  • R은 오른쪽 포인터입니다.

요소는 6, 3, 7, 2, 4, 5입니다.

C 언어의 빠른 정렬 기술을 설명합니다.

C 언어의 빠른 정렬 기술을 설명합니다.

C 언어의 빠른 정렬 기술을 설명합니다.

C 언어의 빠른 정렬 기술을 설명합니다.

C 언어의 빠른 정렬 기술을 설명합니다.

지금,

  • 피벗이 고정된 위치에 있습니다.
  • 왼쪽 요소가 모두 적습니다.
  • 오른쪽 요소가 피벗보다 큽니다.
  • 이제 배열을 왼쪽 부분과 오른쪽 부분 2개의 하위 배열로 나눕니다.
  • 왼쪽 파티션을 사용하여 빠른 정렬을 적용합니다.

C 언어의 빠른 정렬 기술을 설명합니다.

C 언어의 빠른 정렬 기술을 설명합니다.

지금,

  • 피벗이 고정된 위치에 있습니다.
  • 모든 왼쪽 요소가 더 적고 정렬됨
  • 오른쪽 요소가 더 크고 정렬된 순서로 표시됩니다.
  • 최종 정렬된 목록은 2, 3, 4, 5, 6, 7의 두 하위 배열을 결합하는 것입니다.

예시

다음은 빠른 정렬 기술을 사용하여 요소를 정렬하는 C 프로그램입니다 -

#include<stdio.h>
void quicksort(int number[25],int first,int last){
   int i, j, pivot, temp;
   if(first<last){
      pivot=first;
      i=first;
      j=last;
      while(i<j){
         while(number[i]<=number[pivot]&&i<last)
         i++;
         while(number[j]>number[pivot])
         j--;
         if(i<j){
            temp=number[i];
            number[i]=number[j];
            number[j]=temp;
         }
      }
      temp=number[pivot];
      number[pivot]=number[j];
      number[j]=temp;
      quicksort(number,first,j-1);
      quicksort(number,j+1,last);
   }
}
int main(){
   int i, count, number[25];
   printf("How many elements are u going to enter?: ");
   scanf("%d",&count);
   printf("Enter %d elements: ", count);
   for(i=0;i<count;i++)
   scanf("%d",&number[i]);
   quicksort(number,0,count-1);
   printf("Order of Sorted elements: ");
   for(i=0;i<count;i++)
   printf(" %d",number[i]);
   return 0;
}

출력

위의 프로그램이 실행되면 다음과 같은 출력을 생성합니다 -

How many elements are u going to enter?: 10
Enter 10 elements: 2 3 5 7 1 9 3 8 0 4
Order of Sorted elements: 0 1 2 3 3 4 5 7 8 9