数组

1  数组的形式          数据类型  数组名[整数];

2  分为定义行:中括号中整数代表数组长度(可以为变量,但必须有值),非定义行:中括号之中为下标。

3  数组主要和循环搭配,在数组循环中要从0开始。

4  数组是不能进行整体操作的,包括:不能整体输入输出,不能整体赋值,不能整体比较。

5 数组的初始化 eg: int a[3]={1,2,3}        局部初始化 eg:int a[3]={1,2}剩下的值都为0

6  数组的长度是变量时,不能进行初始化。

7  用十六进制来储存,a代表10  ...........f代表15。0x代表十六进制     %x代表十六进制的输出占位符。

8 数组中的元素的地址都是连续的。

9 数组的名字为数组首元素的地址。设数组  int c[3]    c代表首元素地址,c+1为下一个元素的地址,1代表一个单位(该单位由数据类型决定,int为4个字节。)

10  数组地址的应用scanf(“%d”,&a[3])  等于scanf("%d",a+3)

11 数组用于函数的形式  

{    int  www(int  n,int  a[])             ///定义函数

...................................................................

int  a[n];                           定义数组

www(n,a);                            ///调用函数

注:函数中,要先输入n再输入数组名称。

注:数组中形参和实参在空间是是重叠的,也就是说对形参的改变就是对实参的改变。因为传递的是地址,并非数据

12 插入元素时,要扩充空间,从后向前循环,删除元素时,只能把后面的元素前移造成假象删除,从后前向后删除。

//二维数组//

13对于二维数组      数据类型      数组名 [行长度][列长度]

   二维数组与嵌套循环搭配。

14在运用多重数组时,最好要把中括号中的长度写明,不要省略,以免出错。

15 上三角,下三角,一般先处理对角线的位置。

16  交换数据 时要处理一半数据二维中 

      eg:for(int i=0;i<n;i++)

              for(int j=0;j<n;j++)

17对数据进行排列,有冒泡法,和选择法,但是运算效率太低,建议使用快速排序函数。

 qsortt(a,n,sizeof(a[0]),cmp); ///在stdlib中。

int  cmp(int*a,int*b)
{
    return a[0]-b[0];///代表升序       return b[0]-a[0];/代表降序
}

第一个参数代表排序数据的地址,第二个参数表示排序数据的个数,第三个参数代表每个排序数据占用空间的大小,最后一个参数指向比较函数。

18//

                                              数组方法

【1】整数循环拆分   存入数组,倒序输出

【2】取最大值,1设最大值一个一个比较  2快速排序法

【3】交换变量   n/2只交换到一半

【4】图形转换 

        1找规律     b[m-1-i][i]=a[i][j]                   2 伪输出

【5】统计数组法 ,对重复的数字统计,eg: b[a[i]]++

          要注意范围,要进行初始化

【6】二分法     数组较大,把数组的前后分开,先考虑中间元素,再考虑两侧的元素,相当于把数组分为两个较小的部分,在嵌套循环中注意变量初始化

【7】冒泡法排序  多次交换

【8】选择排序法  记录下标,只交换一次变量

【9】0/1法  两个极端,要么有要么没有

【10】打表法   将个个数据排成一个表,通过下标读取数据

【11】较大的数组要定义为全局变量。  因为局部变量分配的空间较小无法储存大的数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值