1.数组
1.1语法
1.2语义
1.3初始化
1.使用数组前必须先初始化:
【int a[10] = {1,2,3,4,5,6,7,8,9,10};】: 全部初始化
【int a[10] = {};】:都初始化为0
【int a[10] = {0};】:都初始化为0
【数组不初始化】:数组中为垃圾值
2.初始化列表中的项数应与数组大小一致:
(1)初始化列表中的项数少于数组元素个数:剩余元素初始化为0。
【int a[10] = {1,2,3,4,5};】
(2)初始化列表中的项数多于数组元素个数:编译器报错。
3.初始化数组时省略方括号中的数字:编译器根据初始化列表中的项数自动确定数组的大小。
【int a[] = {1,2,3};】
4.数组大小的计算:
1.整个数组的大小÷单个元素的大小
注意:
(1)数组的大小是整型常量表达式。
(2)数组大小一定是:【size>0】
5.指定初始化器:
1.4数组的赋值
1.声明数组后,通过数组下标逐个元素进行赋值。
注意:
1.不能把数组整体作为一个单元赋值给另一个数组。
2.除初始化,不允许使用【{}】列表的形式赋值。
1.4数组元素的访问
假定数组大小为【size】,那么数组最后一个元素下标为【size-1】,故而要特别注意数组下标不能越界。
1.5数组的特点
1.连续性:一片连续的空间
2.有序性:元素依次存储
3.单一性:单一类型的元素
1.5数组边界
1.数组越界问题:不是语法问题,编译器不报错
2.在C标准中,使用越界下标的结果是未定义的。
2.排序算法
2.1选择排序
2.1.1推导过程:
【int array[6];】:
i=0 | j=1 | j=2 | j=3 | j=4 | j=5 |
i=1 | j=2 | j=3 | j=4 | j=5 | |
i=2 | j=3 | j=4 | j=5 | ||
i=3 | j=4 | j=5 | |||
i=4 | j=5 |
2.1.2流程图:
2.1.3源代码:
2.2冒泡排序
2.2.1推导过程:
【int array[6];】:
i=0 | j=0 | j=1 | j=2 | j=3 | j=4 |
i=1 | j=0 | j=1 | j=2 | j=3 | |
i=2 | j=0 | j=1 | j=2 | ||
i=3 | j=0 | j=1 | |||
i=4 | j=0 |
2.2.1流程图:
2.2.2源代码:
2.3插入排序
2.3.1推导过程:
插入排序算法的基本操作是在有序数列中找一个适合的位置,插入一项数据。
2.3.1流程图:
2.3.2源代码:
形式1:
形式2:
2.4快速排序
2.4.1推导过程:
step1:选一个基准值 【int *k=&a[0];】
step2:从右边开始找,找比基准值小的值
step3:从左边开始找,找比基准值大的值
step4:交换找到的值
step5:重复2~4的步骤,直到begin与end相遇
step6:此时将相遇位置上的值与基准值交换