>  기사  >  백엔드 개발  >  C에서 열 값을 기준으로 2D 배열을 정렬하는 방법은 무엇입니까?

C에서 열 값을 기준으로 2D 배열을 정렬하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-06 01:43:02285검색

How to Sort a 2D Array in C   by Column Values?

C에서 2D 배열 정렬: 내장 함수 및 사용자 정의 구현

소개

C에서 다차원 배열을 정렬하는 것은 복잡한 작업이 될 수 있습니다. 이 문서에서는 내장 함수의 기능을 살펴보고 열 값을 기준으로 2D 배열을 효과적으로 정렬하기 위한 사용자 정의 구현을 제공합니다.

내장 함수

C는 제공합니다. 다차원 배열을 정렬하기 위한 내장 함수가 제한되어 있습니다. std::qsort 함수를 사용하면 모든 유형의 고정 크기 배열을 정렬할 수 있습니다. 그러나 다중 열 배열 정렬을 위한 직접적인 기능은 제공하지 않습니다.

사용자 정의 구현

다중 열 정렬의 경우 비교기 기능을 사용하는 사용자 정의 구현은 다음과 같습니다. 활용. 이 접근 방식을 사용하려면 기본적으로 요소에 대해 오름차순으로 작동하는 내장 std::sort 함수를 적용해야 합니다.

비교기 함수는 두 개의 배열을 입력으로 사용하고 원하는 열 값을 기준으로 이를 비교합니다. 귀하의 경우 첫 번째 열 값을 비교하여 2D 배열을 정렬하려고 합니다. C 구현은 다음과 같습니다.

<code class="cpp">int comparator(int const *lhs, int const *rhs) {
    return (lhs[0] < rhs[0]) ? -1
        : ((rhs[0] < lhs[0]) ? 1
        : (lhs[1] < rhs[1] ? -1
        : ((rhs[1] < lhs[1] ? 1 : 0))));
}

이 비교기에서는 삼항 문을 계단식으로 배열하여 첫 번째 열 값을 비교한 다음 두 번째 열 값을 비교하여 관계를 끊습니다.

사용법

비교기를 사용하여 배열을 정렬하려면 배열과 비교기를 인수로 사용하여 std::sort 함수를 호출할 수 있습니다.

<code class="cpp">std::sort(std::begin(ar), std::end(ar), comparator);

다음은 사용자 정의 정렬 구현을 보여주는 예입니다.

<code class="cpp">#include <iostream>
#include <algorithm>

int ar[10][2] = {
    {20, 11},
    {10, 20},
    {39, 14},
    {29, 15},
    {22, 23}
};

int main() {
    int comparator(int const *lhs, int const *rhs);

    // Sort the array
    std::sort(std::begin(ar), std::end(ar), comparator);

    // Display the sorted array
    for (int i = 0; i < 10; i++) {
        std::cout << ar[i][0] << " " << ar[i][1] << '\n';
    }

    return 0;
}</code>

출력:

10 20
20 11
22 23
29 15
39 14

결론

C에는 다중 열 배열 정렬을 위한 전용 내장 기능이 없지만 비교기 기능을 사용한 사용자 정의 구현은 효율적이고 유연한 솔루션을 제공합니다. 이 접근 방식을 사용하면 원하는 정렬 기준을 지정하고 특정 요구 사항에 따라 정렬 동작을 사용자 정의할 수 있습니다.

위 내용은 C에서 열 값을 기준으로 2D 배열을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.