在C 中,與Java 不同,沒有直接的內建函數可以依特定列值對二維數組進行排序。但是,可以採用各種方法來實現這種所需的排序行為。
一種方法涉及利用 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 函數執行排序,並列印排序後的二維陣列。
另一種方法涉及建立實作所需邏輯的自訂排序函數。以下是使用冒泡排序的範例實作:
<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 函數實作了一個簡單的冒泡排序演算法,該演算法迭代數組並根據第一列值交換行。然後列印排序後的二維數組。
方法的選擇取決於應用程式的特定要求和效能考量。
以上是如何在 C 中按列值對二維數組進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!