| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 566 人关注过本帖
标题:关于二维数组的排序
只看楼主 加入收藏
tance123
Rank: 2
等 级:论坛游民
帖 子:33
专家分:48
注 册:2009-7-31
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:7 
关于二维数组的排序
请高手看看错哪里了,谢谢~
选择排序:#include<stdio.h>
#define n 2
#define m 3
main()
{
     int a[n][m];
     int b,c,d,e,index;
     int temp;
     for(b=0;b<=n-1;b++)
       {
         for(c=0;c<=m-1;c++)
          
          scanf("%d",&a[b][c]);
       }
      
     for(b=0;b<n;b++)
      {
          for(d=0;d<m;d++)
          {
              for(e=d+1;e<m;e++)
               {
               index=d;
          if(a[b][e]<a[b][index])
          index=e;
          if(index!=d)
         temp=a[b][index];
             a[b][index]=a[b][d];
             a[b][d]=temp;
               }
          }
      
      }
     for(b=0;b<=n-1;b++)
     for(c=0;c<=m-1;c++)
      printf("%d",b[b][c]);
   
  }  
             
           冒泡排序:
#include<stdio.h>
#define n 2
#define m 3
main()
{
    int a[n][m];
    int k[n*m] ;
    int b;
    int c;
    int d;
    int e;
    int f;
    int temp;
    for(f=0;f<n;f++)
    {
    for(b=0;b<m;b++)
        {
    scanf("%d",&a[f][b]);
    }
    }
        for(c=0;c<n;c++)
        {
            for(d=0;d<m;d++)
            {
            if(a[f][d]>a[f][d+1])
             temp = a[f][d];
            a[f][d]=a[f][d+1];
            a[f][d+1]=temp;
            }
        }
    for(e=0;e<m*n;e++)
    printf("%d",k[e]);
}
搜索更多相关主题的帖子: 急件 
2009-08-11 16:35
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:5 
错也错在循环上,
改了一下,你看下:

#include<stdio.h>
#define n 2
#define m 3
main()
{
     int a[n][m];
     int b,c,d,e,i,index; /*我多申请一个i变量,index变量我没用到*/
     int temp;
     for(b=0;b<=n-1;b++)
       {
     for(c=0;c<=m-1;c++)
 
      scanf("%d",&a[b][c]);
       }

/*下面这方面查看输入了哪些数*/
     for(b=0;b<=n-1;b++)
       for(c=0;c<=m-1;c++)
     printf("%d",a[b][c]);
     printf("\n");
 
     for(e=0,c=0,i=0;i<n*m;i++,e++)  /*这里循环n*m-1次,这里5次*/
      {
     if(e>=m)                       
       {
        e=0;
        c=c+1;
       }
     for(b=c;b<n;b++)         /*下面的循环要一步步跟踪才清楚,不好说明*/
      {
       if(b==c)d=e+1;else d=0;   
       for(;d<m;d++)
       {
 
        if(a[c][e]<a[b][d])
          {
           temp=a[c][e];
           a[c][e]=a[b][d];
           a[b][d]=temp;
          }
       }
      }
 
      }
     for(b=0;b<=n-1;b++)
     for(c=0;c<=m-1;c++)
      printf("%d",a[b][c]);
     printf("\n");
 
  }

运行正常,n和m值都可调。

努力—前进—变老—退休—入土
2009-08-11 23:09
tance123
Rank: 2
等 级:论坛游民
帖 子:33
专家分:48
注 册:2009-7-31
收藏
得分:0 
先谢下你,不过不是很懂哈
能不能解释下或者写个更加简单的哈
2009-08-13 12:53
liu1987lang
Rank: 2
等 级:论坛游民
帖 子:42
专家分:44
注 册:2007-4-22
收藏
得分:5 
把数据度到一维数组里排好序以后在读到二维数组里
2009-08-13 13:08
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
不能言达,只能体会,二维或多维组排序是有点麻烦。

努力—前进—变老—退休—入土
2009-08-13 13:16
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:5 
其实和一维数组一样...

#include <stdio.h>
#include <stdlib.h>
#define M 4
#define N 3
void print(int (*p)[N],int m,int n)
{
 int i,j;
 for(i=0;i<m;++i)
    {
     for(j=0;j<n;++j)
        printf("%4d",*(*(p+i)+j));
     printf("\n");
    }
}
int main()
{
 int a[M][N],i,j,temp,*p,*q;
 for(i=0;i<M;++i)
    for(j=0;j<N;++j)
       scanf("%d",&a[i][j]);
 printf("The original array is:\n");
 print(a,M,N);
 for(p=a[0];p<a[0]+M*N-1;++p)                  //只需要这3行就OK了....
    for(q=p+1;q<a[0]+M*N;++q)
       if(*p<*q) temp=*p,*p=*q,*q=temp;
 printf("The reseted array is:\n");
 print(a,M,N);
 system("pause");
 return 0;
}

[ 本帖最后由 godbless 于 2009-8-13 13:35 编辑 ]
2009-08-13 13:29
liu1987lang
Rank: 2
等 级:论坛游民
帖 子:42
专家分:44
注 册:2007-4-22
收藏
得分:5 
#include<stdio.h>
#define m 2
#define n 3
int main()
{
    int i,j,k,t,temp;
    int a[m][n];
    printf("please input 6 numbers!\n");
    for(i=0; i<m; i++)
    {
        for(j=0; j<n; j++)
        {
            scanf("%d",&a[i][j]);
        }
        printf("\n");
    }
    for(i=0; i<m; i++)
    {
        for(j=0; j<n; j++)
        {         
            for(k=0; k<m; k++)
            {
                for(t=0; t<n; t++)
                {
                    if(a[i][j]>a[k][t])
                    {
                        temp=a[i][j];
                        a[i][j]=a[k][t];
                        a[k][t]=temp;
                    }
                }
            }
        }
    }
 
    for(i=0; i<m; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }
 
 
    return 0;
}
2009-08-14 13:53
xxx10605
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-8-12
收藏
得分:0 
自己尝试的多看几篇
2009-08-15 09:12
快速回复:关于二维数组的排序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030170 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved