내장 함수 또는 대체 방법을 사용하여 C에서 2D 배열 정렬
C에서 2D 배열을 정렬하는 것은 다음과 같이 독특한 과제를 제시합니다. std::sort()와 같은 내장 함수는 일반적으로 1D 배열용으로 설계되었습니다. 그러나 첫 번째 열 값만 비교하는 등 특정 기준에 따라 2D 배열을 정렬하려는 경우가 있습니다.
std::qsort
C에는 다중 열 정렬을 위한 직접 내장 기능이 없지만 std::qsort()는 다양한 솔루션을 제공합니다. 이 함수는 배열에 대한 포인터, 배열 크기, 배열 내의 요소 크기 및 비교 함수를 사용합니다. 사용자 정의 비교 함수를 제공하면 특정 배열 요소를 기반으로 정렬 기준을 지정할 수 있습니다.
사용자 정의 정렬을 위한 비교 함수
비교 함수는 정수 결과를 반환해야 합니다. 두 배열 요소의 비교를 기반으로 합니다. 2D 배열의 경우 포인터 연산을 사용하여 개별 요소에 액세스해야 합니다. 다음 예를 고려하십시오.
int qsort_compare(const void *arg1, const void *arg2) {
int const *lhs = static_cast(arg1);
int const *rhs = static_cast(arg2);
return (lhs[0] 이 비교 함수는 첫 번째 요소(첫 번째 열 값과 동일)를 비교하고 결과에 따라 적절한 순서를 반환합니다.
구현 예
std::qsort()와 사용자 정의 비교 함수를 결합하면 C에서 2D 배열을 다음과 같이 정렬할 수 있습니다. 다음:
#include
#include
using namespace std;
int main() {
int ar[5][2] = {
{20, 11},
{10, 20},
{39, 14},
{29, 15},
{22, 23}
};
qsort(ar, 5, sizeof(*ar), qsort_compare);
cout 출력:
Sorted 2D Array:
10 20
20 11
22 23
29 15
39 14
이 방법은 사용자 정의 비교 함수를 생성하고 사용해야 하지만 C에서 2D 배열을 정렬하기 위한 포괄적이고 효율적인 솔루션을 제공합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3