c语言问题希望大家指导一下

输入一个3×3的二维整数矩阵,分别采用冒泡法、交换法编程实现对这9个数字从小到大进行排序,并输出。
例如,输入为: ,则输出为: 。
【其中选择法排序的思路提示:设有10个元素a[1]a[10],将a[1]与a[2]a[10]比较,若a[1]比a[2]a[10]都小,则不进行交换,即无任何操作。若a[2]a[10]中有一个以上比a[1]小,则将其中最小的一个(假设为a[i])与a[1]交换,此时a[1]中存放了10个中最小的数。第二轮将a[2]与a[3]a[10]比较,将剩下9个数中的最小值a[i]与a[2]对换,此时a[2]中存放的是10个中第二小的数。以此类推,共进行9轮比较,a[1]a[10]就已按由小到大的顺序存放了。】

参考学习:

#include <stdio.h>

void bubble_sort(int arr[3][3], int len) {
    int i, j, temp;
    for (i = 0; i < len - 1; i++) {
        for (j = 0; j < len - 1 - i; j++) {
            if (arr[j][0] > arr[j + 1][0]) {
                temp = arr[j][0];
                arr[j][0] = arr[j + 1][0];
                arr[j + 1][0] = temp;
            }
        }
    }
}

void exchange_sort(int arr[3][3], int len) {
    int i, j, temp;
    for (i = 0; i < len - 1; i++) {
        for (j = i + 1; j < len; j++) {
            if (arr[i][0] > arr[j][0]) {
                temp = arr[i][0];
                arr[i][0] = arr[j][0];
                arr[j][0] = temp;
            }
        }
    }
}

int main() {
    int matrix[3][3];
    int i, j;

    // 输入矩阵
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            scanf("%d", &matrix[i][j]);
        }
    }

    // 冒泡排序
    bubble_sort(matrix, 9);

    // 输出排序结果
    printf("冒泡排序结果:\n");
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    // 交换排序
    exchange_sort(matrix, 9);

    // 输出排序结果
    printf("交换排序结果:\n");
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}


以上代码中,定义了两个函数 bubble_sort 和 exchange_sort 分别代表冒泡法排序和交换法排序。在主函数中,首先输入一个3x3的矩阵;然后使用冒泡法和交换法对这9个数字从小到大进行排序,并输出排序结果。

C中的二维数组用一个指针可以当做是一维数组使用



```c
#include <iostream>  
using namespace std;  
  
void bubbleSort(int arr[], int n) {  
    for (int i = 0; i < n - 1; i++) {  
        for (int j = 0; j < n - i - 1; j++) {  
            if (arr[j] > arr[j + 1]) {  
                swap(arr[j], arr[j + 1]);  
            }  
        }  
    }  
}  
  
void selectionSort(int arr[], int n) {  
    for (int i = 0; i < n - 1; i++) {  
        int minIndex = i;  
        for (int j = i + 1; j < n; j++) {  
            if (arr[j] < arr[minIndex]) {  
                minIndex = j;  
            }  
        }  
        swap(arr[i], arr[minIndex]);  
    }  
}  
  
int main() {  
    int arr[3][3] = {{1, 3, 5}, {2, 4, 6}, {3, 5, 7}};  
    int n = 3;  
  
    bubbleSort(arr, n);  
    cout << "Sorted array: ";  
    for (int i = 0; i < n; i++) {  
        cout << arr[i] << " ";  
    }  
    cout << endl;  
  
    selectionSort(arr, n);  
    cout << "Sorted array: ";  
    for (int i = 0; i < n; i++) {  
        cout << arr[i] << " ";  
    }  
    cout << endl;  
  
    return 0;  
}

```

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7462587
  • 以下回答来自chatgpt:
    #include <stdio.h>
    
    void bubble_sort(int arr[][3], int n) //冒泡排序
    {
        int i, j, temp;
        for (i = 0; i < n - 1; i++)
        {
            for (j = 0; j < n - 1 - i; j++)
            {
                if (arr[i][j] > arr[i][j + 1])
                {
                    temp = arr[i][j];
                    arr[i][j] = arr[i][j + 1];
                    arr[i][j + 1] = temp;
                }
            }
        }
    }
    
    void swap_sort(int arr[][3], int n) //交换排序
    {
        int i, j, min, temp;
        for (i = 0; i < n - 1; i++)
        {
            min = i; //记录最小值所在的位置
            for (j = i + 1; j < n; j++)
            {
                if (arr[j][0] < arr[min][0])
                {
                    min = j; //更新最小值所在的位置
                }
            }
            if (min != i) //如果位置变化了,说明当前元素不在最前面,需要交换
            {
                for (j = 0; j < n; j++)
                {
                    temp = arr[i][j];
                    arr[i][j] = arr[min][j];
                    arr[min][j] = temp;
                }
            }
        }
    }
    
    int main()
    {
        int arr[3][3] = {{9, 8, 7},
                         {6, 5, 4},
                         {3, 2, 1}};
    
        printf("原始矩阵:\n");
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                printf("%d ", arr[i][j]);
            }
            printf("\n");
        }
    
        //冒泡排序
        bubble_sort(arr, 3);
    
        printf("冒泡排序后的矩阵:\n");
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                printf("%d ", arr[i][j]);
            }
            printf("\n");
        }
    
        //交换排序
        swap_sort(arr, 3);
    
        printf("交换排序后的矩阵:\n");
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                printf("%d ", arr[i][j]);
            }
            printf("\n");
        }
    
        return 0;
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^