7月学习总结

8月2日
7月学习总结。
7月从17日开始算起总共两个星期,主要的学习内容包括两项。1,对大一c++基础知识的回顾。2,学习了之前没有接触过的高精度计算和数据排序。(其实还有一点递推但是做的题太少了就不写了)
一,因为在之前复习基础知识的时候写过几篇博客,对难点,易混淆和比较好的例题进行了总结,所以就不在这里写了。
二,
1,高精度计算,有高精加法,高精减法,高精乘高精,高精乘低精,高精除以低精,高精除以高精。(书上还有回文数,这就是前面知识的变式,就不在这写了)
2,储存在数组中是倒序,所以变量是i的话,原字符串的下标就是len-i。
3,一定别忘了字符串中元素减-‘0’。
4,写高精问题建议多写函数,因为会看起来代码很简洁,思路很清晰。但是函数一定要注意返回类型,之前把int写成bool了,从4点到8.30都没检查出来哪里错了。
5,高精加法就是从最低位开始逐项相加,到两个字符串长度的较大值停止,每次都要加上上一次的余数,而且是在每次循环过程中进行取余。第一次加的余数是一,最后一次要在二者长度的较大之中加一的下标中赋值。最后将二者长度的较大之中加一赋值给a[0]并且当a[0]是零&&a[0]大于一的时候就自减。(最后这步叫做删除前导零)
6,记住最后时倒序输出。
7,因为被减数一定大于简述,所以到被减数的位数停止。如果每一项有负值就向前借一位。最后别忘了删除前导零。
8,高精乘低精。每一位数字都乘低精,之后除以10取余即可。
9,高精乘高精。因为a乘b和b乘a结果相同,所以不必区分乘数和被乘数。例如,外层循环是a,内层循环就是将a的第i位乘b的每一位,相当于高精乘一个小于10的低精,别忘了除以10和取余,外层每次循环都需要最后要将i+len的下标。得到的新数的长度是lena+lenb但是要删除前导零。
10,高精除低精,被除数数组和除数数组不需要倒序。每次乘10取余。
11,高精除以高精,通过减法,将除数扩大到与被除数相同位数,再进行缩小,缩小到可以被减即可。剩余余数之后再进行缩小,最后得到余数和商。
12,数据排序尽管有很多种,但是在做题中一个sort就解决了,也用不到,就简单提一下原理。
13,选择排序每次假设循环第一个是最小的然后找到最后看是否还有更小的。冒泡排序,循环n-1次,每次都找逆序对,然后将最大次打的挨着冒泡到最后。
14,插入排序,假如插入的是第i个元素,就要从第i-1个开始找谁比他小,如果没有他就是最小的,然后有比他小的就break,插入。
15,桶排序,和map的原理差不多,就是利用下标和元素的值。
16,快速排序法,每次分成两部分(不一定一样长)保证两部分中一部分的值全部小于另一部分,直到
没一部分的右端开始点小于等于左端时结束。
17,归并排序,利用递归将数组分解为一个元素,之后再合并,每次都是按照大小顺序合并,所以最后也是按照顺序。利用次方法,加上一句ans+=mid-i+1可以求解逆序对的问题。

总结,基础知识的点其实挺多的,挺有用的。高精也常常和进制转化相结合,其实就是除以和取余的数字不再是10而是n了,还有阶乘和因子(质因子即因子中质数的因子)的结合,每次别忘了[0]赋值再进行删除前导零。排序基本上做题用个sort就可以了,也不用去记这些排序算法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值