二维数组使用冒泡排序
老哥们,我想使用for循环冒泡排序排序二维数组中的元素,但是我这么写运行结果元素丢失了。请教缺了什么,或者二维数组不能使用冒泡排序 本帖最后由 sunrise085 于 2020-5-17 11:08 编辑miniArce 发表于 2020-5-17 10:47
不知道你是打算怎么排序、是整个二维数组排序,还是每一行单独排序?
冒泡排序需要两层循环
你的是二维数组冒泡排序,若每行单独排序需要三层循环。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
int h = 0;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 4; j++)
for (int k=0;k<4-j;k++){
if ( a> a) {
h =a;
a = a;
a = h;
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("a[%d][%d]=%-3d\n", i, j, a);
}
printf("\n");
}
system("pause");
return 0;
}
若是对着呢个数组进行排序,只需两层循环
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
int h = 0;
for (int i = 0; i < 3*4; i++)
for (int j=0;j<12-i;j++){
if ( a> a) {
h =a;
a = a;
a = h;
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("a[%d][%d]=%-3d\n", i, j, a);
}
printf("\n");
}
system("pause");
return 0;
} 应该是数组下标弄错了
把文字代码发出来,测一下(可以复制粘贴的那种) 额 liuzhengyuan 发表于 2020-5-17 10:24
应该是数组下标弄错了
把文字代码发出来,测一下(可以复制粘贴的那种)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
int h = 0;
int j;
for (int i = 0; i < 3; i++) {
for ( j = 0; j < 4; j++) {
if ( a> a) {
h =a;
a = a;
a = h;
}
}
}
for (int i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("a[%d][%d]=%-3d\n", i, j, a);
}
printf("\n");
}
system("pause");
return 0;
} #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
int h = 0;
int j;
for (int i = 0; i < 3; i++) {
for ( j = 0; j < 4; j++) {
if ( a> a) {
h =a;
a = a;
a = h;
}
}
}
for (int i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("a[%d][%d]=%-3d\n", i, j, a);
}
printf("\n");
}
system("pause");
return 0;
} 买了 焦健鬼 发表于 2020-5-17 10:32
买了
这样子怎么上传的 本帖最后由 liuzhengyuan 于 2020-5-17 10:44 编辑
miniArce 发表于 2020-5-17 10:28
#define _CRT_SECURE_NO_WARNINGS
#include
#include
for (int j = 0; j < 4 - 1; j++) 排序改成这样试试
如何正确地发代码、上传图片和附件?
(出处: 鱼C论坛) liuzhengyuan 发表于 2020-5-17 10:35
排序改成这样试试
如何正确地发代码、上传图片和附件?
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
int h = 0;
int j;
for (int i = 0; i < 3; i++) {
for ( j = 0; j < 4; j++) {
if ( a> a) {
h =a;
a = a;
a = h;
}
}
}
for (int i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("a[%d][%d]=%-3d\n", i, j, a);
}
printf("\n");
}
system("pause");
return 0;
} 10楼讲解的很详细。提问的时候最好说清楚,比如此题是整个数组排序还是行排序 chxchxkkk 发表于 2020-5-17 11:43
10楼讲解的很详细。提问的时候最好说清楚,比如此题是整个数组排序还是行排序
谢谢
1 miniArce 发表于 2020-5-20 03:57
谢谢
Are you kidding me?
11楼就是你想要的最佳答案? 11楼这个...
恶意评选最佳!! 恶意评选最佳!! 荒唐事。 鱼币 鱼币
页:
[1]
2