数组
什么是数组?
数组是一个固定长度的存储相同类型的的数据结构,数组中的元素被存储在一段连续的内存空间中。它是最简单的数据结构之一
int[] array = 10
这样不就创建了一个长度为10的数组,数组是用来存放数据的
对于数组,人家是有序数据的集合,在内存中展示。就是人家需要连续的内存空间
一维数组的定义与初始化
一维数组指的只有一个下标的数组,它用来表示一组类型相同的数据
格式:
类型说明符 数组名[常量表达式];
在上面格式中,
类型说明符表示数组中所有元素的类型
常量表达式指的是数组的长度,也就是数组中存放元素的个数
下面定义一个大小为10的int类型数组:
int array[10];
其中,int是数组的类型,array[ ]是数组的名称,方括号[ ]中的10是数组的长度
定义一个数组只是为数组开辟了一块内存空间,这时如果想使用数组操作数据,还需要对数组进行初始化
数组初始化,是对谁初始化
数组初始化不是对数组变量初始化,而是对数组对象进行初始化,无非就是告诉内存,我要创建一个数组,你的给我分配一块连续的内存。
数组下标是从0开始的,数组这家伙是一个数据集合,有序的,而且每个数据的类型都是相同的,
一个大大的特点,人家支持随机访问,这个就是可以使用下标访问数组的特性
数组初始化的方式有三种:
- 直接对数组中的元素进行赋值
int i[1]={
1,2,3,4,5,6,7,8,9,10};
上述代码定义了一个长度为10的整型数组i,数组中的元素依次为1,2,3,4,5,6,7,8,9,10
- 只对数组中的一部分元素进行赋值
int i[10]={
1,2,3,4,5};
上述代码定义了一个长度为10的整型数组i,但在初始化时,只对数组中的前五个元素进行赋值,其他元素的值会被默认为0.
所以数组中的元素依次为1,2,3,4,5,0,0,0,0,0
- 对数组全部元素赋值,但不指定长度
int i[]={
1,2,3,4,5};
在上述代码中,数组i中的元素有5个,系统会根据给定初始化元素的个数定义数组的长度,因此数组的i长度为5
上面的每一个格子都可以看做是一个内存单元,现在我们创建的内存为10的整型数组,蓝色的即为我们所创建的数组,红色的表示被占用。
数组能存储啥
你创建什么类型的数组,你就存放什么类型的数据
数组其实是一个特殊的对象
一维数组的访问
一维数组的访问包括读取指定元素和遍历数组
- 读取指定元素
在程序中,我们需要访问数组中的一些元素,这时我们可以通过数组名和下标来访问数组中的元素
格式:
数组名 [需要元素的下标]
- 遍历一维数组
依次访问数组中的每一个元素,这种操作称为数组的遍历
通常遍历数组只用循环语句实现,以数组的元素的下标作为循环条件,只要数组元素下标有效就可以获取数组元素
#include<stdio.h>
int main(void)
{
int a[10];//定义一个名字为a的整型数组,a中的元素有10个
for(int i=0;i<10;i++)
{
a[i]=i;//为元素赋值
printf("%d\n",a[i]);//for循环遍历每一个元素
}
return 0;
}
运行结果
0
1
2
3
4
5
6
7
8
9
对数组元素排序
冒泡排序
冒泡即整个过程跟水中气泡上升的原理相似
原理:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来
此处引用网上一张比较经典的gif,我是在博主:解梦者看到的。。。。。,由这张图可以看出冒泡排序的整个过程:
其中最重要的格式:
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)