C에서 qsort()를 사용하여 배열을 정렬하는 방법

Ceseo Qsort Leul Sayonghayeo Baeyeol Eul Jeonglyeolhaneun Bangbeob



정렬은 컴퓨터 프로그래밍의 기본 작업이며 데이터 모음을 특정 순서로 정렬하는 것과 관련됩니다. C에서 요소 배열을 정렬하는 한 가지 방법은 q정렬() 함수는 표준 라이브러리의 일부입니다. 이 함수는 배열, 크기 및 비교 함수를 인수로 사용하고 기본적으로 배열을 오름차순으로 정렬합니다.

이 가이드라인은 다음을 사용하여 배열을 정렬하는 방법을 보여줍니다. q정렬() C에서 기능을 수행하고 C 예제 코드를 통해 이해를 돕습니다.

C에서 qsort()

C 표준 라이브러리는 q정렬() 단순히 배열을 정렬하는 데 사용되는 함수입니다. 모든 데이터 유형 배열과 함께 작동할 수 있는 매우 최적화되고 빠른 기능입니다.







C에서 qsort()를 사용하는 헤더 파일

그만큼 q정렬() 메서드는 내부에 정의되어 있습니다. stdlib.h 구현하기 전에 정의해야 하는 헤더 파일 q정렬() C 프로그램에서.



#include

qsort() 선언

의 선언 q정렬() 기능은 다음과 같습니다.



무효의 qsort ( 무효의 * 베이스 , number_of_elements , size_of_element , 비교 함수 )

qsort() 함수의 매개변수

의 매개변수 q정렬() 기능은 다음과 같습니다.





베이스: 정렬할 배열의 첫 번째 요소에 대한 포인터입니다.

number_of_elements: 정렬할 배열의 요소 수입니다.



size_of_element: 배열에 있는 각 요소의 크기(바이트)입니다.

비교 함수: 요소의 순서를 정의하는 비교 함수에 대한 포인터입니다.

qsort()의 비교 함수란?

비교 함수는 비교할 요소를 가리키는 const void* 유형의 두 매개 변수를 사용합니다. 함수는 첫 번째 요소가 두 번째 요소 앞, 같은 위치 또는 뒤에 각각 정렬되어야 하는지 여부에 따라 0보다 작거나 같거나 큰 정수를 반환해야 합니다.

C에서 qsort가 작동하는 방식

그만큼 q정렬() 기능은 다음과 같은 방식으로 작동합니다.

메모: 여기서 우리는 int arr[] = {5, 2, 8, 3, 1, 9};

1: 처음에 qsort 함수는 다음 매개변수와 함께 호출됩니다.

qsort ( , 6 , 크기 ( 정수 ) , 비교 함수 ) ;

여기서 arr은 배열에 대한 포인터이고, 6은 배열의 요소 수이고, sizeof(int)는 배열의 각 요소 크기이고, Comparison_function은 요소가 정렬되는 순서를 결정하는 함수입니다.

2: qsort 함수는 피벗 요소를 선택합니다. 선택한다고 하자 피벗으로.

삼: qsort 함수는 배열을 두 개의 하위 배열({2, 1} 및 {5, 8, 9})로 분할합니다. 첫 번째 하위 배열에는 피벗보다 작거나 같은 요소가 포함되고 두 번째 하위 배열에는 피벗보다 큰 요소가 포함됩니다.

4: qsort 함수는 각 하위 배열에서 자신을 재귀적으로 호출합니다.

5: qsort 함수는 각 하위 배열에 대한 피벗을 선택합니다. 피벗으로 1과 8을 선택한다고 가정해 보겠습니다.

6: qsort 함수는 각 하위 배열을 두 개의 추가 하위 배열로 분할하고 이러한 각 하위 배열에서 자신을 재귀적으로 호출합니다.

7: qsort 함수는 정렬된 하위 배열을 다시 단일 정렬 배열로 결합합니다. {1, 2} 및 {5, 8, 9}는 {1, 2, 5, 8, 9}가 됩니다.

8: 정렬된 전체 배열이 반환됩니다.

C 프로그래밍에서 qsort 구현

다음 코드는 qsort C 프로그래밍에서의 함수.

#include

#include

정수 비교하다 ( const 무효의 * a1 , const 무효의 * b1 )

{

반품 ( * ( 정수 * ) a1 - * ( 정수 * ) b1 ) ;

}

정수 기본 ( )

{

정수 = 0 , 하나에 = 6 ;

정수 정렬 [ ] = { 5 , 2 , 8 , , 1 , 9 } ;

qsort ( 정렬 , 하나에 , 크기 ( 정수 ) , 비교하다 ) ;

printf ( 'qsort()를 사용하여 배열의 정렬된 요소는 다음과 같습니다. ' ) ;

~을 위한 ( = 0 ; < 하나에 ; ++ ) {

printf ( '%d' , 정렬 [ ] ) ; }

반품 0 ;

}

위의 코드에서 먼저 두 개의 매개변수로 비교 함수를 만듭니다. a1 그리고 b1 . 그런 다음 main()에서 실행이 시작됩니다. 메인에서 두 개의 정수 변수를 i=0 및 num=6으로 초기화합니다. 그런 다음 6개의 요소가 있는 배열을 다음과 같이 선언합니다. {5, 2, 8, 3, 1, 9} . 금후 q정렬() 배열 유형의 세 가지 매개 변수가 있으며 num 매개 변수는 배열의 총 요소를 알려줍니다. 크기(정수) 배열의 전체 크기를 나타내며 compare는 배열 요소를 하나씩 비교하는 데 사용됩니다. 그런 다음 다음을 사용하여 정렬된 배열을 인쇄합니다. 프린트에프() C에서 함수

산출

결론

qsort 모든 유형의 배열을 정렬하기 위한 C 프로그래밍의 강력한 기능입니다. 퀵 정렬 알고리즘을 사용하여 비교 기능을 기반으로 요소를 오름차순 또는 내림차순으로 정렬합니다. 위의 가이드는 단계별 작업을 통해 C 프로그래밍에서 qsort를 구현하는 쉬운 방법을 보여줍니다. qsort 연산.