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()