求解
这里记录一下暑假两个月自学的笔记
汇编语言-给电脑看的语言 虽然也是要被转化为0与1的 但层次更为粗糙 可读性更低
vscode的debugger
make clang debug50等用法
声明数组
int 数组名[数组大小]
数组名[从零开始的数组序号] = 变量名
例
int scores[3];
scores[0] = 72;
scores[1] = 77;
scores[2] = 98;
可以通过get_int函数达到获取int数值的作用
const是常量 定义之后无法再更改
例const int n =3
数据在处理的时候会占用内存
而每段数据为了表明字符串已结束会多加一个字节
例: 3个字符 将占用3+1个字节
string 字符串 由char(字符) 组成
大写和小写字母在acsii码中正好差32
小写转大写减去32即可
比较string用的是strcmp(string1,string2)
linear search 线性
binary search 二分
还有排序相关的
选择排序算法
一次一次选最小的元素 放到最左边
冒泡排序算法
抓出来一个和别的依次比较
假如大就往右移(互换位置)
然后依次解决
选择排序的次数是n(n-1)/2 (已编辑)
数量大概是n的平方
冒泡排序的次数为(n-1)(n-1)
这俩的上限其实都差不多
这俩的上界都是n方
下界是
冒泡排序在数据已经接近或已经有序的情况下
更有优势吧
感觉这俩更像是两个顺序不同的排序
选择排序主要是从左到右筛选
冒泡排序主要是从右到左
然后是在函数里套函数的情况
void draw(int n)
{}
归并排序
把数据拆成两半
并分别排好顺序
例
0136 2457
然后先看两边的第一个
0
排前面
现在揭露0右边的1
再把1和2比较
以此类推
归并会将这些数据先拆成两个两个
二个排序→四个排序→八个排序
以此类推
有更好的效率
%p 输出地址
变量名前面要加上&
上面这个是在printf中的用法
定义时使用*p
表明p是一个指针
静态数组:静态定义的数组在程序加载的时候就已经分配了内存空间,直到函数结束或者程序结束后才会被释放;%20动态数组:由malloc()或new()等函数定义的数组,在程序运行时才申请内存空间,使用完后可以借助free()或delete()手动释放。
以scanf来获取数据