CPU执行代码(指令)的数量与消耗的时间正相关
大O计数法
成等差数列
插入排序
在有序的数列中,找一个合适的位置插入
军训
先输入前面的数据,第二个数据与前一个数据比较,小的话就往前挪,再次比较前面的数据,直到前面的数据小于此数据,或走到头
变长数组
长数组中的“变”不是指可以修改已创建数组的大小,一旦创建了变长数组,它的大小则保持不变。这里的“变”指的是:在创建数组时,可以使用变量指定数组的长度。(普通数组只能用常量或常量表达式指定数组的长度)
变长数组VLA只能是局部变量数组
变长数组VLA不能在定义的时候进行初始化
变长数组VLA必须是自动存储类别,即不能使用extern或static存储类别说明符
变长数组VLA不等于动态数组,本质还是静态数组,也就是说,数组的长度在变量的整个生命周期中是不可变的
由于变长数组只能是局部变量,且必须是自动存储类别,因此变长数组分配在栈上
可变长数组对于多维数组也适用(如array[a][b] )
————————————————
变长数组就是可以通过输入一个值控制数组的长度。
二分查找
前提是数据必须有序
mid=(begin+end)/2
一位字符型数组:
字符数据:
unsigned char s[10];
unsigned char s[10] = {'h','e','l','l','o'}; //数组考虑
最主要:
"tom"
"english" //字符串 常量
//本质存储时候,是按照 字符数组的形式存储
字符数组: 主要作用,想处理字符串数据
unsigned char s[10] = {'h','e','l','l','o'};//数组考虑
"hello" --> unsigned char s[10] = {'h','e','l','l','o','\0'};
'\0' 对于字符串来说,叫结束标志
unsigned char s[10] = "hello";
unsigned char s[10] = {'h','e','l','l','o','\0'};
unsigned char s[10] = {'h','e','l','l','o'};
unsigned char s[] = {'h','e','l','l','o','\0'};
unsigned char s[] = {'h','e','l','l','o'};
注意:
1.字符串 -- 更关注的是字符串整体,而不是单个字符
2.字符串的结束标志 比较重要 ,表示字符串结束
3.处理字符串时,常常使用结束标志作为判断
int puts(const char *s);
功能:
输出字符串
参数:
@s 字符串所在空间的首地址
返回值:
int 成功 >0
失败 -1
特点:
输出时,自动换行
char *gets(char *s);
功能:
输入字符串
参数:
@s 存放字符串一块内存空间
返回值:
表示的是 存储字符串那块空间首地址
char *strcpy(char *dest, const char *src);
功能:
实现字符串拷贝
参数:
@dest 目标字符串
@src 源字符串
返回值:
成功 返回的是 dest地址
失败 NULL
int a,b,c;
a=b=c=1; //链式操作