一. 对齐:
1. 单行对齐
命令模式下按两下 ==
2. 多行对齐:
shift+v 选中
按一下 =
起始行 = 结束行
3. 全局对齐:
起始行 = 结束行
gg G(shift + g)
二. 数组:
1.数组概念
可一次性定义多个变量,本质上是相同类型变量的集合
2. 数组语法:
类型说明符 数组名[常量表达式];
int a[10];
(1).类型说明符
整型
int,short,long ,long long
浮点
字符int a = 10; //a int型
int a[10]; //a所代表的类型 是int[10]
int [10]a; //a所代表的类型 int[10]数组本身也是一种数据类型。它是由相同类型的元素按照一定顺序组成的一种复合数据类型。
(2).数组名
代表着 数据集合 (是数组在内存空间的名字)
数据类型角度
1. a代表整个数组的数据类型
2. a代表一个值 --数组首元素的地址代表的数据类型 ---数组类型 int a[10]; //a所代表的类型为int[10] //数组类型
代表的值 ---数组首元素的地址 // &a[0]
(3).常量表达式表示数组的长度 --- 变量的个数
eg:
int a[5]; //定义一个数组,这个数组放了5个 int型变量
数组长度可以省略 ,但有前提 ----必须要有初始化的值
int a[] = {1,2,3}; //编译器会通过值来计算出数组长度
3.数组的初始化 (赋值)
int a[10] = {1,2,3,4,5,6,7,8,9,10}; //全部初始化
int a[10] = {1,2,3,4,5}; //部分初始化---将值依次给到数组元素 ,没有给值的元素,默认初始化为0
将数组初始化为0
int a[10] = {}; //都初始化为0
int a[10] = {0}; //都初始化为0
数组不初始化 ---数组中为垃圾值
数组赋值不能整体赋值,需要一个元素一个元素个给到
4. 数组下标:
a[下标];
下标范围 [0~数组长度-1]
eg:int a[10];
[0~9]
a[i] //下标运算 ---本质是一个地址运算
下标代表偏移量
5. 数组在内存中的特点
连续性: 定义一个数组会开辟一片连续的空间
有序性: 数组中的元素按下标位置依次存储
单一性: 数组中只能存储同一类型的元素
6.注意
数组的越界问题:
eg: int a[10]
a[-5]
1.不是语法问题 --- 编译器不报错
2.程序员 自己小心
练习:
准备一个数组 10个元素
找出数组中的最大值
打擂台的思想求 max 和 min
三. 排序
按一定的顺序排列
升序 1 2 3 4
降序 4 3 2 1
1. 选择排序:
思想:为合适的位置,选择一个合适的数
0 1 2 3 4 5 6 7 //下标
1 5 3 6 8 7 2 4 //数值0号位置:
找最小值
i = 0;
for (j = 1; j < len; ++j)
{
if (a[j] < a[0])
{
交换
}
}
1号位置:
找最小值
i = 1;
for (j = 2; j < len; ++j)
{
if (a[j] < a[1])
{
交换
}
}
for (i = 0; i < len-1; ++i) //位置 0 ~ len-1 控制(遍历)要选数的位置;只需确定前len-1个 位置
{
for (j = i+1; j < len; ++j) //往后遍历找数;j 代表要选数的位置的后一位;保证能比到 最后一个位置的数
{
if (a[j] < a[i]) //拿着 a[i] 去对比看后面是否有更小的数,若有把更小的数放上去(要 找数的位置),把原来的放下来(放到所遇到的更小的数的位置)
{
交换
}
}
}
2. 冒泡排序:
思想:相邻两个元素两两比较,小的放前,大的放后。
0 1 2 3 4 5 6 7 //下标
1 5 3 6 8 7 2 4 //数值第1趟
两两比较 7 次,冒出一个数 8
for (i = 0;i < 7; ++i)
{
if (a[i] > a[i+1]) //相邻比较,小往前走,大往后走
{
交换
}
}
第2趟(冒第二趟时相当于少了一个数)
两两比较 6 次,冒出一个数 7
for (i = 0;i < 6; ++i)
{
if (a[i] > a[i+1]) //相邻比较,小往前走,大往后走
{
交换
}
}
......
第7趟 (总共要冒 n-1 趟)
两两比较 1 次,冒出一个数 2
for(j = 1;j < n; ++j)// 控制趟数,走一趟冒出一个数,得能到 n-1 趟;最后一个数不用冒
{
for (i = 0;i < n-j ; ++i) // 遍历数组,进行两两比较;因为冒出一个相当于少一个数 (位置定了)所以两两比较的次数受到趟数的影响
{
if (a[i] > a[i+1]) //相邻比较,小往前走,大往后走
{
交换
}
}
}