>백엔드 개발 >C++ >내장 함수나 사용자 정의 방법을 사용하여 C에서 2D 배열을 어떻게 정렬합니까?

내장 함수나 사용자 정의 방법을 사용하여 C에서 2D 배열을 어떻게 정렬합니까?

DDD
DDD원래의
2024-11-06 04:06:02892검색

How do I sort a 2D array in C   using built-in functions or custom methods?

내장 함수 또는 대체 방법을 사용하여 C에서 2D 배열 정렬

C에서 2D 배열을 정렬하는 것은 다음과 같은 독특한 과제를 제시합니다. std::sort()와 같은 내장 함수는 일반적으로 1D 배열용으로 설계되었습니다. 그러나 첫 번째 열 값만 비교하는 등 특정 기준에 따라 2D 배열을 정렬해야 하는 경우도 있습니다.

std::qsort 활용

C에는 다중 열 정렬을 위한 직접 내장 기능이 없지만 std::qsort()는 다양한 솔루션을 제공합니다. 이 함수는 배열에 대한 포인터, 배열 크기, 배열 내의 요소 크기 및 비교 함수를 사용합니다. 사용자 정의 비교 함수를 제공하면 특정 배열 요소를 기반으로 정렬 기준을 지정할 수 있습니다.

사용자 정의 정렬을 위한 비교 함수

비교 함수는 정수 결과를 반환해야 합니다. 두 배열 요소의 비교를 기반으로 합니다. 2D 배열의 경우 포인터 연산을 사용하여 개별 요소에 액세스해야 합니다. 다음 예를 고려하십시오.

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

이 비교 함수는 첫 번째 요소(첫 번째 열 값과 동일)를 비교하고 결과에 따라 적절한 순서를 반환합니다.

구현 예

std::qsort()와 사용자 정의 비교 함수를 결합하면 C에서 다음과 같이 2D 배열을 정렬할 수 있습니다.

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

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:" << endl;
  for (int i = 0; i < 5; i++) {
    cout << ar[i][0] << " " << ar[i][1] << endl;
  }

  return 0;
}</code>

출력:

Sorted 2D Array:
10 20
20 11
22 23
29 15
39 14

이 방법은 사용자 정의 비교 함수를 생성하고 사용해야 하지만 C에서 2D 배열을 정렬하기 위한 포괄적이고 효율적인 솔루션을 제공합니다.

위 내용은 내장 함수나 사용자 정의 방법을 사용하여 C에서 2D 배열을 어떻게 정렬합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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