第1-7课:基础开胃菜

本文详细探讨了编程中的多种技巧,包括哨兵位的使用、数组下标处理、取余运算的妙用、一重循环遍历二维数组、单链表操作以及ASCII编码特性。此外,还讲解了数组链表、用数组存储二叉树、topN问题与最小堆、常用的hash算法以及编程语言中的特定考量,如浮点数相等判定、运算符优先级和类型转换。这些技巧和方法在算法设计和实现中十分实用,能够提高代码效率和程序设计的一致性。
摘要由CSDN通过智能技术生成

本系列前几课分别介绍了算法的常用设计模式、建立数据模型的常用思路和方法。其实,用代码实现的算法肯定还会包含一些代码特有的技巧,这一课就来介绍一些这样的技巧。这些巧妙构思的代码技巧,有些体现了效率,有些体现了程序设计的一致性原则,有些则体现了软件架构的一些好思想;这些技巧,都可以在今后的算法设计中直接或间接使用,即使用不上,了解这些内容对于开阔思维还是很有益处的,更不用说其中一些技巧都是常见或不常见的面试题了。

常用技巧

哨兵位

设置哨兵位是程序设计中常用的技巧之一,常用在线性表的处理过程中,比如查找和移动数据操作。哨兵位通常起到两个作用,一个是作为一个临时存储空间使用,另一个是减少不必要的越界判断,简化算法代码复杂度。比如环形链表通常会设置一个表头节点,无论向前或向后遍历,均以这个表头节点为遍历越界(重复)的依据,这样维护链表的时候就不需要专门存储一个表头指针,这个表头节点可以理解为哨兵位。插入排序算法中也会利用表中的 0 号位置作为哨兵位使用,这个位置不仅起到一个临时存储空间的作用,还可以简化插入后移动数据的判断条件。注意下面的插入排序代码,内层 while 循环移动数据的时候,只需判断当前位置的数是否比 ls[0] 位置大即可,不需要关心 j 的位置是否小于 1 而越界,因为当 j=1 的时候,ls[j - 1] &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吹泡泡的小猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值