首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言二維數組按第 0 列冒泡排序:整行交換實現

     編輯:程式設計綜合問答

題目

二維陣列 `a` 按 `a[i][0]` 降序排列,整行元素跟隨交換。

參考代碼

#include <stdio.h>

void swapRows(int arr[][2], int row1, int row2, int cols) {
    for (int k = 0; k < cols; k++) {
        int tmp = arr[row1][k];
        arr[row1][k] = arr[row2][k];
        arr[row2][k] = tmp;
    }
}

int main() {
    int num[3][2] = {{5,2},{3,1},{2,9}};
    int rows = 3, cols = 2;

    for (int i = 0; i < rows - 1; i++) {
        for (int j = 0; j < rows - 1 - i; j++) {
            if (num[j][0] > num[j+1][0]) { // 降序:大者前移
                swapRows(num, j, j+1, cols);
            }
        }
    }
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) printf("%d ", num[i][j]);
        printf("\n");
    }
    return 0;
}

要點

  • 封裝 `swapRows` 提高可讀性。
  • 冒泡排序雙重循環邊界 `rows-1-i` 減少比較次數。
  • 題目要求「由大到小」,比較條件為 `>`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved