C语言-一维数组-007

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=0j=1j=2j=3j=4j=5
i=1j=2j=3j=4j=5
i=2j=3j=4j=5
i=3j=4

j=5

i=4j=5

2.1.2流程图:

2.1.3源代码:

2.2冒泡排序

2.2.1推导过程:

【int array[6];】:

i=0j=0j=1j=2j=3j=4
i=1j=0j=1j=2j=3
i=2j=0j=1j=2
i=3j=0

j=1

i=4j=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:此时将相遇位置上的值与基准值交换

2.4.2流程图:

2.4.3源代码:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值