C에서는 Java와 달리 직접 내장 함수가 없습니다. 특정 열 값을 기준으로 2D 배열을 정렬할 수 있습니다. 그러나 원하는 정렬 동작을 달성하기 위해 다양한 접근 방식을 사용할 수 있습니다.
한 가지 방법은 일반 정렬 알고리즘인 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!