输入一个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]就已按由小到大的顺序存放了。】
c语言问题希望大家指导一下
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 语言-逆行者 2023-04-17 22:24关注
参考学习:
#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个数字从小到大进行排序,并输出排序结果。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 单片机学习顺序问题!!
- ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
- ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
- ¥15 相敏解调 matlab
- ¥15 求lingo代码和思路
- ¥15 公交车和无人机协同运输
- ¥15 stm32代码移植没反应
- ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
- ¥100 连续两帧图像高速减法
- ¥15 如何绘制动力学系统的相图