好的,所以我有了多维数组“ int Array [3] [4];”因此,例如,我有这样的扫描信息:
2 5 6 4
3 4 8 3
1 8 8 7
所以我需要对每个列进行排序(增长),如下所示:
1 4 6 3
2 5 8 4
3 8 8 7
因此,我想问你如何在不使用指针的情况下对此类多维数组进行排序?以前我使用气泡方法,但是这次我无法使其正常工作...
我的代码示例:
for(i=0;i<3;i++){
for(z=i+1;z<4;z++){
if(Array[i][z-1]>Array[i][z]) {
int x=Array[i][z-1];
Array[i][z-1]=Array[i][z];
Array[i][z]=x;
}
}
}
最佳答案
要比较的元素数为3,因此可以如下。
#include <stdio.h>
int main(void){
int Array[3][4] = {
2, 5, 6, 4,
3, 4, 8, 3,
1, 8, 8, 7
};
int i,j;
int min, max, mid;
int min_i, max_i;
for(i=0;i<4;++i){
max_i = Array[0][i] < Array[1][i];
min_i = !max_i;
if(Array[min_i][i] > Array[2][i])
min_i = 2;
if(Array[max_i][i] < Array[2][i])
max_i = 2;
max=Array[max_i][i];
mid=Array[3-max_i-min_i][i];
min=Array[min_i][i];
Array[0][i]=min;
Array[1][i]=mid;
Array[2][i]=max;
}
for(i=0;i<3;++i){
for(j=0;j<4;++j)
printf("%d ", Array[i][j]);
printf("\n");
}
return 0;
}