利用数组处理批量数据---二维数组

学习总结:今天学的字符数组上的是云里雾里,在老师不断狂轰乱炸彻底举白旗投降了,但是还是在努力挣扎,勇敢zaizai不怕困难。

今天是写博客的第五天了,每天坚持写一篇博客是写作目标,学期1w行代码是学术目标,目前正在努力中,开始写博客是抱着当学习日志在写,但没想到有那么多友友会看这个小白写的低级烂文(万分感谢)

二维数组基本类型为a[ ] [ ],且下标最大为行列值减一(命名下标从0开始)

最常见的为排序问题,个人感觉选择排序较为使用方便。

(1)选择排序

首先将选择排序拆分为选择和排序

即         选择+排序=选择排序

在解决问题时首先解决的是算法再决定代码的选择

【1】选择问题

选择常见的为最大,最小,中位数等等。

例如选择最大 max

1.输入 (scanf)有n个数的数组a

2.逐一比较a中数大小假定第一个为最大

max=a[1];k=1

3.for i=2 to n do

4.if max<a[i]

5.then max=a[i]        k=i

再n-1次比较后就可以选出最大值,这种算法在时间是为最短的最优方案。

2.排序

(1)快速排序

排序的大致思想与选择一样,都在与比较后将大小判断,但排序可以有更灵活的解决方案。

在高中就学习过排列组合问题,其中捆绑法为本次重点,将一部分数划分为一部分,剩下为第二部分,两组同时判断再合并。

(2)冒泡排序法 -------  求最大值且指出所在行列

#include <stdio.h>

int main()

{  

 int i,j,row=0,colum=0,max;

    int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};        //定义数组并赋初值  

   max=a[0][0];                                //先认为a[0][0]最大   

 for(i=0;i<=2;i++)       

 for(j=0;j<=3;j++)     

    if(a[i][j]>max)             //如果某元素大于max,就取代max的原值       

 {  

 max=a[i][j];         row=i;                    //记下此元素的行号   

  colum=j;                    //记下此元素的列号  

       }  

   printf("max=%d\nrow=%d\ncolum=%d\n",max,row,colum);   

 return 0;

}

下题将在下章给出练习结果

 

(3)二维数组互换元素

#include<stdio.h>
int main()
{
    int a[2][3]={{1,2,3},{4,5,6}};
    int b[3][2],i,j;
    printf("array a:\n");
    for(i=0;i<=1;i++)
    {for(j=0;j<=2;j++)
    {
    printf("%5d",a[i][j]);
    b[j][i]=a[i][j];
    }
    printf("\n");
    }
    printf("array b:\n");
    for(i=0;i<=2;i++)
    {
    for(j=0;j<=1;j++)
    printf("%5d",b[i][j]);
    printf("\n");
}
return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zaizai_mietou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值