一维数组基本知识点

数组就是一个集合
特点一:每个数据元素是相同的数据类型
特点二:放在连续的内存空间中;
三种定义方法
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;
 } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值