数组就是一个集合
特点一:每个数据元素是相同的数据类型
特点二:放在连续的内存空间中;
三种定义方法
1;数据类型 名[数组长度]
eg: int makabaka[3]
给数组中元素赋值
makabaka [0]=1;
makabaka [1]=2;
...
2.数据类型 名[数组长度]={值1,2.....} 如果初始化数据没有全部赋值其余的全部默认为0
eg int wuxidixi[3]={1,6,5} 用循环来写输出所有数据会更方便
for(i=0;i<5;i++)
{cout<<wuxidixi[i]<<endl;
3.数据类型 名[]={值1,值2.......}
eg:
yigubigu[]={1,2,3,4,5,6} 数组的元素个数谁自动被计算出来
如果单纯只有 yigubigu[] 无法使用,必须知道初始化长度
arrary[2] 2称为下标,可以通过下标访问数组中的元素 下标从0开始
给数组起名不要和变量重名
一维数组数组名的用途
1.可以统计整个数组在内存中的长度
(1)sizeof(数组名)
统计第n个元素的长度
(2)sizeof(数组名[下标])
若 sizeof(array)/sizeog(array[0])可以得出元素个数
2.可以获取数组在内存中的首地址
cout<<数组名<<endl; 可以得到一个十六进制编号的地址
数组名是一个常量不可以进行赋值操作 如array=10 会报错
#include<iostream>
using namespace std;
int main(){
int arr[10]={1,2,3,4,5,6,7,8,9,10};
cout<<"占用的内存空间为"<<sizeof(arr)<<endl;
cout<<"每个元素占用的内存空间"<<sizeof(arr[0])<<endl;
cout<<"数组中的元素个数"<<sizeof(arr)/sizeof(arr[1])<<endl;//一个int占四个字节
cout<<"数组的首地址为"<<arr<<endl;//一般十六进制
cout<<"数组中第一个元素的地址为"<<&arr[0]<<endl; //结果与首地址相同,位置重合两个等价 ,其他元素各差四个字节,即连续的线性空间
return 0 ;
}
数组练习
1.找最大值,打擂台
2.利用中间变量实现倒序输出
int t=arr[start]
arr[start]=arr[end]
arr[end]=t
start++
end--
如果 start<end
执行互换
#include<iostream>
using namespace std;
int main()
{
int arr[5]={1,2,6,9,8};
cout<<"数组逆置前顺序"<<endl;
for(int i=0;i<5;i++){
cout<<arr[i]<<endl;
}
int start=0;//起始下标
int end=sizeof(arr)/sizeof(arr[0])-1;//结束下标
//实现元素互换
while(start<end){
int temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
start++;
end--;
} cout<<"逆置之后的数据为"<<endl;
for(int i=0;i<5;i++)
{
cout<<arr[i]<<endl;
}
return 0;
}
方法二,不利用中间值
#include<iostream>
using namespace std;
int main()
{
int a[10],i;
int N;
cin>>N;
for(i=0;i<N;i++)
{
cin>>a[i];
}
for(i=N-1;i>=0;i--){
cout<<a[i];
if(i!=0)cout<<' ';
}
return 0;
}
3.冒泡法排列
比较相邻元素 一次找到一个最大值
八个元素排序7轮(最后只剩下一个数不需要比较)
排序总轮数=元素个数-1
每轮对比次数=元素个数-排序轮数-1
#include<iostream>
using namespace std;
int main()
{
int arr[9];
for(int i=0;i<8;i++)
{
cin>>arr[i];
}
//开始冒泡
for(int i=0;i<8;i++)
{
//内层对比
for(int j=0;j<9-i-1;j++)
{
if(arr[j]>arr[j+1])
{
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}cout<<"排序后"<<endl;
for(int i=0;i<9;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
return 0;
}