d6数组+排序(部分)
一、数组基础理论
数组也是一种数据类型,可以解决大量变量的定义问题
数组:数组是有序数据的集合,可以批量定义多个变量
数组要解决的数据的特点:它们都是同一类型的数据
一维数组
整型
字符型
二维数组
整型
字符型
一维数组的定义方式为:
类型说明符 数组名 [常量表达式]
(1) (2) (3)
说明
(1)类型说明符----用来说明数组中变量的类型(int\float\char)
(2)数组名----代表的是一组变量的集合,标识符起名字的规则和变量名命名规则一致
(2)[常量表达式]----- []表示定义的是一个数组
-----数组的长度、数组中变量的个数
注意:常量表达式为整型,C99 标准之后,不要求必须是常量,也可以是变量
eg:
int score[1000](表示定义了一个int型的数组,每个变量都是int类型)(总共1000个变量)
数组定义:
1.数组定义本质上是定义了多个变量
eg. int score[1000];//表示一次性开辟了1000个int型变量的空间
数组的初始化和赋值:
//全部初始化
int a[10] = {1,2,3,4,5,6,7,8,9,10};
数组元素的引用:
a数组名---找到了这个10个变量的集合
引用时请说明一下引用的是那个具体的变量
语法:
数组名[下标];此时是一个运算符,下标的取值范围为0~数组长度-1
注意:
1.数组空间的大小
2.数组也是一种数据类型
int a[10];
int a; //a是什么类型--a是int类型
//判断一个标识符的数据类型
int [10] //数组类型
//表示10个int型的数组
3.数组名代表数组,对应的数据类型就是数组类型
4.数组的特点
1.连续性//一片连续空间
2.单一性//数组中存放的是同一类型的数据
3.有序性//第一个元素后面就是第二个
5.数组名
类型角度:数组名代表了对应的数组类型
数值角度:数组名代表的是数组首元素的地址
6.下标:相对于首元素的偏移量
下标 取值范围 [0~数组长度-1]
下标不在合法范围之内?则表示数组越界
数组越界这个问题 编译器不会帮我们检查
程序员自己小心
7.注意 数组不能整体赋值
下面的写法不对:
int a[10];
a = {1,2,3,4,5,6,7,8,9,10}; //不对!!
数组不能整体赋值
注意
数组的初始化 和 赋值:
//全部初始化
int a[10] = {1,2,3,4,5,6,7,8,9,10};
//部分初始化 ---值依次给到前面的元素,后面未初始化的元素 默认给0
int a[10] = {1,2,3,4,5};
//不初始化 --- 数组中是随机值(垃圾值)
int a[10];
//初始化成0
int a[10] = {0};
int a[10] = {}; //{} 初始化器 ---表示就是进行初始化 默认给0
//初始化时 数组长度可以省略 注意:长度可以省略,但是必须有对应初始化的值
int a[] = {1,2,3,4};//数组最终长度 --- 有初始化值个数来推算
赋值:
//赋值运算 --- 要给到数组中具体的元素,而不是整个数组
int a[10];
a[0] = 2;
如果都给到,则可以配合for循环
排序:
排序算法:
1.选择排序
2.冒泡排序
3.插入排序
4.快速排序(指针)
选择排序:
核心思想:给合适的位置选择合适的数
算法实现步骤:位置-----下标表示位置
确定0号位置:找最小值
算法实现步骤:
1.外层循环控制要找的位置
2.里层循环控制要找的数
min = a[0];
for(j = 0;j<len;++j);
{
if (a[j] < min)
{
jiaohuan;
}
}
for()