吃透 C 语言数组基础!越界、冒泡 / 选择排序

数组基础
1.数组定义
类型说明符 数组名[常量];
类型说明符:基本数据类型、构造数据类型(不能说void类型)。说明数组中保存的数据的数据类型
数组名:遵循标识符的命名规则
[常量]:数组中可以保存的元素的个数
2.数组元素的访问
数组名[下标];
[ ]:下标运算符
下标:代表要访问数组中的第几个元素(0到元素个数减一)
常量、变量、表达式(结果都应该是整型)

注意:
1数组元素访问时,下标从0开始到元素个数减一,超出该范围,造成数组越界访问
2.数组名代表了数组这种类型,不能给数组名直接赋值

3.数组初始化
如果不初始化,数组默认存放随机值
 全部初始化
int a[10] = {0,1,2,3,4,5,6,7,8,9};
 局部初始化
int a[10] = {1,2,3,4,5};
已初始化部按照初始化数据存储,未初始化部分按0存储
 初始化为全0
int a[10] = {0,0,0,0,0,0,0,0,0,0};
int a[10] = {0};
4.数组的存储形式
 单一性:数组中的元素,每个元素数据类型都是一致的
 有序性:数组中的元素按照a[0]-a[n]的顺序进行存储
 连续性:数组在内存中选取连续内存空间存储
数组越界:
1.初始化数组时,初始化的元素个数超出了数组本身的素个数
2.访问数组元素时,[ ]的下标超出了数组元素的访问范围

5.数组排序
升序、降序
 选择排序**
思想:将待排位置的数据和后面的数据依次进行比较,按照升序要求,将较小值存储在待排位置
时间复杂度(效率):O(n^2)
空间复杂度(空间/内存):O(1)
排序算法的稳定性:在一个待排序列中出现了两个相同的数据,经过排序后,这两个相同数据的相对位置没有发生变化,则该排序算法为稳定的排序算法;假如这两个相同数据的相对位置发生了变化,则该排序算法是不稳定的排序算法
选择排序:不稳定
在这里插入图片描述

 冒泡排序**
思想:相邻两两数据进行比较,按照升序要求将较大值交换到两两中的后者位置,经过一趟排序,优先确定最大值
时间复杂度:O(n^2)
空间复杂度:O(1)
稳定性:稳定
在这里插入图片描述

 插入排序
 二分查找(折半查找)
前提条件:序列必须有序
思想:将要查找的值和序列的中间位置比较,比中间位置大,则在后半序列中继续折半;如果比中间值小,则从前半个序列中继续折半,如果恰好相等;则找到
优势:效率高 时间复杂度—》O(logn)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值