数组的一些的应用

数组的三个算法:
1;冒泡排序法

 两个for循环,一个是循环次数,一个是排序交换位置

 int a[5]={1,4,5,7,2};
 for(int i=0;i<5;i++){    //循环次数
	for(int j=1;j<5;j++){   //排序比较
		if(a[j]<a[j-1]){
			a[j]=a[j]+a[j-1];
			a[j-1]=a[j]-a[j-1];  //交换位置
			a[j]=a[j]-a[j-1];
		}
	}
 }
 for(int i=0;i<5;i++){
	printf("%d",a[i]);  //依次打印
 }

2:快速查找最小数,最大数的

#include<stdio.h>
void main(){
    int a[5]={2,6,7,1,0};
    int min=a[0];
    int i;
 for( i=1;i<5;i++){
    if(a[i]<min){
        min=a[i];
    }
 }
   printf("%d",min);
   getchar();
}

一维数组的定义方式

类型 变量名[大小]={};

扩展到二维数组到多维数组

内存中的描述:有N个大小数据类型为一样的数据连续存储

初始化

赋初值

取值关键:下标取值

二维数组

定义格式 int[1][2]={};  第一个1是行数  2是列数

行数从0开始数  ,列数也从0开始;

一维数组和二维数组联系

二维数组里面的每一个元素又是一个数组

2是数组个数  3是元素个数

a[0][0]=1  a[0][1]=2  a[0][2]=3

二维数组初始化特殊地方 以一维数组的方式进行初始化 如果没有赋值,采取和一维数组相同的数据类型默认形式。

int a[2][3]={{1,2,3},{4,5,6}}

赋初值第二种方式 int[2][3]={1,2,3,4,5,6}

错误命名int a[][]={};

可以这样命名 int a[][3]={{1,2,3},{4,5,6},{7,8,9}};

总结就是行数可以填也可不填 ,列数一定要填,

结合一维数组的初始化 int a[]={0};


也有边界问题,超过范围则会奔溃

单个数据的赋值定义:定位

最大数据的是当前定义的数据的n-1, m-1;
 


计算矩阵对角线上的元素和

#include<stdio.h>
void main(){
    int i,j,sum=0;
    int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
        for(i=0;i<3;i++){
            for(j=0;j<4;j++){
                  if(i==j){
                     sum+=a[i][j];
                   }
              }  
         }
    printf("%d",sum);
    getchar();
}

//找出二维数组中的最小值

#include<stdio.h>
void main(){
    int i,j;
    int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
    int min=a[0][0];
    for(i=0;i<3;i++){
        for(j=0;j<4;j++){
            if(a[i][j]<min){
                min=a[i][j];
             }
         }
     }  
    printf("%d",min);
    getchar();
}

前提是数组的排序是从小到大排序

3:二分查找(可以不掌握,需要了解)(通过下标取值,取的最小值和最大值,最小下标和最大下标的中间值,还有一个自己想要查找的值)

int Search(参数a,sizeof(a)/sizeof(int),key){                    //程序最后要返回一个值

  中间下标mid 自己想要查找的值key

  判断a[mid]与key值的大小

  如果相等,那就返回a[mid]

  如果key>a[mid]  最小下标start加1   mid=start+1

  如果key<a[mid]  最小下标end减1       mid=end-1

}

void main(){      //程序最后不要返回值,因为void是空类型   

    int a[5]={0,3,5,6,8}

    Search(a,sizeof(a)/sizeof(int),key )     //传递数组和数组长度还有自己想要查找的值
}

具体的函数例子我试着写了,还没调试对就先不发,我还没怎么搞清楚这个东西
































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值