算法笔记学习记录(1)

算法笔记学习记录(1)

近期为了备考机试,翻阅了胡凡的《算法笔记》,由于内容过多且我认为很多知识点十分有价值,故以笔记的形式记录学习过程与自己的思考,算法实现的语言为c、c++。
注意事项
(1)
空指针异常:如果要使用一个指针指向的对象,但对象为NULL时,程序会报错。 解决方法,提前判断:
If(rb!=null && rb!=””)
改成:
If(rb==null);
If(rb!=null&&rb!=””)或者if((“”).equals(rb))
(2)
黑盒测试:多点测试与单点测试
单点测试,对每组测试的输出结果进行判断,数据正确则获得这组分数的分值,题目总得分等于通过的数值的分值之和。
多点测试:一次运行所有数据,所有结果都必须完全正确,只要有一组数据输出错误,得分为0.
(3)
使用scanf输入时,“%c”将会识别空格和换行作为输入,所以在输入测试用例时要注意输入方式,以免输入无效
(4)
使用scanf时,除了char数组(str)整个输入的情况下不加&以外,其他变量类型都需要加&
(5)
memset——对数组中每一个元素赋相同的值,且只建议赋0,-1。如果要对数组赋其他数字,使用fill。
memset(数组名,值,sizeof(数组名))
(6)
字符数组由若干个char类型的元素组成,且在一维数组的末尾有一个空字符\0,以表示存放的字符串的结尾。故1.数组长度比实际存储字符串的长度大1. 2.如果不是使用scanf函数的%s格式或gets函数输入字符串(例如使用getchar)一定要在字符串结尾加上\0
(7)
string.h头文件包含了:
1.strlen()
2.strcmp() 返回两个字符串按字典序的大小比较结果。
3.strcpy() 把字符数组二复制给字符数组一
4.strcat() 把字符数组二接到字符数组一后面
(8)
sscanf(str,"%d",&n);
把字符串str中的内容以“%d”的格式写到n中
sprintf(str,"%d",n);
把n以"%d"的格式写到str字符数组中
(9)
取地址运算符&
int* 等表示方法表示指针变量
指针变量存放的是地址 int* p = &a;
数组名称可作为数组的首地址使用
只有在获取地址的情况下对元素进行操作,才能真正的修改变量
对引用变量的操作就是对原变量的操作

(10)
two points思想:利用问题本身与序列的特性,使用两个下标i,j对序列进行扫描(可以同向,也可以反向),以较低的复杂度解决问题
(11)
快速排序
快速排序的思路是使当前元素(temp)左边的所有值小于它,右边的值都大于它,为此,可以设置左右两个指针left,right用以标记并不断移动,只要right指向的元素大于temp,不断左移,left也如此,将temp放入两指针相遇的地方。
(12)
大整数
如果需要运算的数大小超过基本数据类型存储的精度,可以使用数组比如 int d[1000]来存储每一位,然后按位运算。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值