一 、数组的概述
数组是存放相同类型的有顺序的变量集合
特点: 1.数组中数据元素都是相同的数据类型
2.数组是有连续的内存位置组成的
arr[0]中的[0]是下标,可以通过下标访问数组中的元素
二、一维数组
2.1一维数组定义方式(3)
数据类型 数组名 [数组数组长度]
数据类型 数组名 [数组数组长度]={值1,值2,值3.....}
数据类型 数组名[ ] = { 值1,值2,值3..... }
列如:int a[5];//表示一个数组名为a的数组,有十个元素整形
5个元素为:a[0],a[1],a[2],a[3],a[4],a[5]
2.2 一维数组数组名
用途:1.可以统计整个数组中的内存长度
2.可以获取内存中的首址
元素取首地址前要加&
#include <iostream>
using namespace std;
int main()
{
//数组名的用途
//1.可以统计整个数组在内存中的长度
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[0]) << endl;
//2.可以获取数组中的首址
cout << "数组的首地址为: " << (int)arr << endl;
cout << "数组中第一个元素的地址为: " <<(int)& arr[0] << endl;
cout << "数组中第2个元素的地址为: " << (int)&arr[1] << endl;
//数组名是常量,不可以进行赋值操作
return 0;
}
数组名是一个地址常量,不允许改变,不可以进行赋值操作,但是数组中的元素是变量,可以改变赋值
2.3冒泡排序
1. 比较相邻元素,如果第一个比第二个大,则交换
2.每一个相邻元素做相同工作,执行后找到第一个最大的
3.重复以上步骤
(外层)排序的总轮数=元素个数-1
(内层)每轮对比的次数=元素个数-排序轮数-1
#include<iostream>
using namespace std;
int main()
{
int a[10]; int i, j, k;
cout << "请输入十个整数" << endl;
for (i = 0; i <= 9; i++)
{
cin >> a[i];
}
for (j = 0; j < 9; j++)
{
for (i = 0; i < 9 - j; i++)
{
if (a[i] > a[i + 1])
{ k = a[i]; a[i] = a[i + 1]; a[i + 1] = k; }
}
}
cout << endl << "请输入从小到大冒泡排序后的十个数";
for(i=0;i<10;i++)
{
cout << a[i] << endl;
}
cout << endl;
return 0;
2.4查找算法(折半查找)
将有序数列逐次折半,并确定数据的位置和大小,用待查找的数据与其比较,若相等则查找成 功.否则,如果待查找的数据比折半位置的数据小,那么到前半区继续查找,否则到后半区查找
#include<iostream>
using namespace std;
void main()
{
int s[10]={-56,-23,0,8,10,12,26,38,65,98}
int low,high,binary,x;
cout<<"请输入要查找的数据: "<<endl;
cin>>x;
low=0;high=9;
binary=(low+hogh)/2;
while(x!=s[binary] &&low<=high)
{
if(x<s[binary]) high=binary-1;
else loe=binary+1;
binary=(low+high)/2;
}
if(low<=high)
cout<<"查找成功!在数组中的下标为:"<<binary<<endl;
else cout<<" 没有找到数据"<<endl;
}
三 、二维数组
3.1二维数组定义方式(4)
1.数据类型 数组名[行] [列]
2.数据类型 数组名[行] [列]={{数据1,数据2},{数据3,数据4}}
3.数据类型 数组名[行] [列]={数据1,数据2,数据3,数据4}
4.数据类型 数组名[ ] [列]={数据1,数据2,数据3,数据4}
3.2二维数组数组名
用途:1.查看二维数组所占内层空间
2.获取二维数组首地址
#include<iostream>
using namespace std;
int main()
{
int arr[2][3] =
{
{1,2,3},
{4,5,6}
};
cout << "二维数组所占空间: " << sizeof(arr) << endl;
cout << "二维数组第一行所占内存空间: " << sizeof( arr[0] )<< endl;
cout << "二维数组第一个元素占用空间:" << sizeof( arr[0][0]) << endl;
cout << "二维数组的行数为: " << sizeof(arr) / sizeof (arr[0]) << endl;
cout << "二维数组的列数为: " << sizeof (arr[0]) / sizeof (arr[0][0]) << endl;
cout << "二维数组首地址为: " <<(int) arr << endl;
cout << "二维数组第一行的首地址为: " << (int)arr[0] << endl;
cout << "二维数组第二行的首地址为: " << (int)arr[1] << endl;
cout << "二维数组第一个元素首地址为: " << (int)&arr[0][0] << endl;
cout << "二维数组第二个元素首地址为: " << (int)&arr[0][1] << endl;
return 0;
}