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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-08 12:24:01414검색

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

C에서 내장 함수 또는 사용자 정의 메소드를 사용하여 열 값을 기준으로 2D 배열 정렬

C에서는 Java와 달리 직접 내장 함수가 없습니다. 특정 열 값을 기준으로 2D 배열을 정렬할 수 있습니다. 그러나 원하는 정렬 동작을 달성하기 위해 다양한 접근 방식을 사용할 수 있습니다.

C 표준 라이브러리 함수 사용

한 가지 방법은 일반 정렬 알고리즘인 std::qsort 함수를 활용하는 것입니다. 사용자 정의 비교기 함수를 정의하면 열 값을 기준으로 정렬 논리를 제어할 수 있습니다. 구현 예는 다음과 같습니다.

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

int compareArrayColumns(int **lhs, int **rhs) {
  return (*lhs)[0] < (*rhs)[0];
}

int main() {
  int arr[][2] = {
    {20, 11},
    {10, 20},
    {39, 14},
    {29, 15},
    {22, 23}
  };

  std::qsort(arr, 5, sizeof(*arr), (int (*)(const void *, const void *))compareArrayColumns);

  for (int i = 0; i < 5; ++i) {
    std::cout << arr[i][0] << " " << arr[i][1] << std::endl;
  }

  return 0;
}</code>

이 코드에서는 CompareArrayColumns 함수를 사용하여 각 배열 행의 첫 번째 열 값을 비교합니다. 정렬은 std::qsort 함수를 사용하여 수행되며 정렬된 2D 배열이 인쇄됩니다.

사용자 정의 방법 사용

또 다른 접근 방식은 원하는 논리를 구현하는 사용자 정의 정렬 함수를 만드는 것입니다. 다음은 버블 정렬을 사용한 구현 예입니다.

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

void bubbleSortByColumn(int arr[][2], int size) {
  for (int i = 0; i < size; ++i) {
    for (int j = 0; j < size - 1; ++j) {
      if (arr[j][0] > arr[j + 1][0]) {
        int temp[2];
        temp[0] = arr[j][0];
        temp[1] = arr[j][1];
        arr[j][0] = arr[j + 1][0];
        arr[j][1] = arr[j + 1][1];
        arr[j + 1][0] = temp[0];
        arr[j + 1][1] = temp[1];
      }
    }
  }
}

int main() {
  int arr[][2] = {
    {20, 11},
    {10, 20},
    {39, 14},
    {29, 15},
    {22, 23}
  };

  int size = sizeof(arr) / sizeof(arr[0]);
  bubbleSortByColumn(arr, size);

  for (int i = 0; i < size; ++i) {
    std::cout << arr[i][0] << " " << arr[i][1] << std::endl;
  }

  return 0;
}</code>

이 코드에서 bubbleSortByColumn 함수는 배열을 반복하고 첫 번째 열 값을 기준으로 행을 바꾸는 간단한 버블 정렬 알고리즘을 구현합니다. 그런 다음 정렬된 2D 배열이 인쇄됩니다.

접근 방식 선택은 애플리케이션의 특정 요구 사항과 성능 고려 사항에 따라 달라집니다.

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

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