目录
1.概述
所谓数组,就是一个集合,里面存放了相同类型的数据元素
特点1:数组中的每个数据元素都是相同的数据类型
特点2:数组是由连续的内存位置组成的
2.一维数组
1.一维数组定义方式
三种方式:
- 数据类型 数组名[数组长度];
- 数据类型 数组名[数组长度]={值1,值2...};
- 数据类型 数组名[ ]={值1,值2...};
1.定义方式1
//数据类型 数组名[数组长度];
int a[10];
//利用下标赋值
a[1]=100;
a[2]=90;
....
2. 定义方式2
//数据类型 数组名[数组长度]={值1,值2...};
int a[5]={10,20,30,40,50};
cout<<a[0]<<endl;
cout<<a[1]<<endl;
cout<<a[2]<<endl;
cout<<a[3]<<endl;
cout<<a[4]<<endl;
//数据类型 数组名[数组长度]={值1,值2...};
int a[5]={10,20,30,40,50};
//利用循环
for(int i=0;i<5;i++)
{
cout<<a[i]<<endl;
}
//数据类型 数组名[数组长度]={值1,值2...};
//如果在初始化数据时候,没有全部填写完,会用0来填补剩余数据
int a[5]={10,20,30};
cout<<a[0]<<endl;
cout<<a[1]<<endl;
cout<<a[2]<<endl;
cout<<a[3]<<endl;
cout<<a[4]<<endl;
2.一维数组数组名
一维数组名称的用途:
- 可以统计整个数组在内存中的长度 sizeof(a)
- 可以获取数组在内存中的首地址 cout<<a<<endl;
1.可以统计整个数组在内存中的长度
int a[10]={1,2,3,4,5,6,7,8,9,10};
cout<<"整个数组占用内存空间为;"<<sizeof(a)<<endl;
cout<<"每个元素占用内存空间为:"<<sizeof(a[0])<<endl;
cout<<"数组中元素个数为:"<<sizeof(a)/sizeof(a[0])<<endl;
2.可以获取数组在内存中的首地址
int a[10]={1,2,3,4,5,6,7,8,9,10};
cout<<"数组首地址为:"<<(int)a<<endl;
cout<<"数组中第一个元素地址为:"<<(int)a[0]<<endl;
cout<<"数组中第二个元素地址为:"<<(int)a[1]<<endl;
注意:
数组名是常量,不可以进行赋值操作
a=100;是不允许的
3.冒泡排序
作用:最常用的排序算法,对数组内元素进行排序
- 比较相邻的元素,如果第一个比第二个大,就交换他们两个
- 对每一对相邻元素同样的工作,执行完毕后,找到第一个最大值
- 重复以上的步骤,每次比较次数-1,查到不需要比较
排序总轮数=元素个数-1
每轮对比次数=元素个数-当前排序轮数-1
//利用冒泡排序实现升序序列
int arr[9]={6,8,2,5,3,9,4,1,7};
cout<<"排序前:"<<endl;
for(int i=0;i<9;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
//开始冒泡排序
//排序总轮数=元素个数-1
for(int i=0;i<9-1;i++)
{
//内层循环对比 次数=元素个数-当前轮数-1
for(int j=0;j<9-i-1;j++)
{
//如果第一个数字,比第二个数字大,交换两个数字
if(arr[j]>arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
//排序后结果
cout<<"排序后:"<<endl;
for(int i=0;i<9;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
3.二维数组
1.二维数组定义方式
二维数组定义的四种方式
- 数据类型 数据名[行数][列数];
- 数据类型 数据名[行数][列数]={{数据1,数据2},{数据3,数据4}};
- 数据类型 数据名[行数][列数]={数据1,数据2,数据3,数据4};
- 数据类型 数据名[ ][列数]={数据1,数据2,数据3,数据4};
建议:以上4种定义方式,利用第二种更加直观,提高代码的可读性
1.定义方式1
//数据类型 数据名[行数][列数];
int arr[2][3];
arr[0][0]=1;
arr[0][1]=2;
arr[0][2]=3;
arr[1][0]=4;
arr[1][1]=5;
arr[1][2]=6;
cout<<arr[0][0]=1<<endl;
cout<<arr[0][1]=2<<endl;
cout<<arr[0][2]=3<<endl;
cout<<arr[1][0]=4<<endl;
cout<<arr[1][1]=5<<endl;
cout<<arr[1][2]=6<<endl;
//数据类型 数据名[行数][列数];
int arr[2][3];
arr[0][0]=1;
arr[0][1]=2;
arr[0][2]=3;
arr[1][0]=4;
arr[1][1]=5;
arr[1][2]=6;
//利用循环,外层循环打印行数,内层循环打印列数
for (int i=0;i<2;i++)
{
for(int j;j<3;j++)
{
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
2.定义方式2
//数据类型 数据名[行数][列数]={{数据1,数据2},{数据3,数据4}};
int arr2[2][3]={{1,2,3},{4,5,6}};
for (int i=0;i<2;i++)
{
for(int j;j<3;j++)
{
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
3.定义方式3
//数据类型 数据名[行数][列数]={数据1,数据2,数据3,数据4};
int arr4[2][3]={1,2,3,4,5,6};
4.定义方式4
//数据类型 数据名[ ][列数]={数据1,数据2,数据3,数据4};
int arr4[ ][3]={1,2,3,4,5,6};
2.二维数组数组名
类比于一维数组