排序算法

根据这是算法的实现方式不同给它们进行了一些分类,首先是根据算法实现是否需要比较分为了比较排序与非比较排序,对于比较排序它存在一个算法极限,并在笔记中进行分析。在比较排序中根据数据结构又可以分为简单排序与基于二叉树实现的排序,基于二叉树的排序的算法虽然复杂一些但是可以大大提升排序的时间复杂度,并且二叉树排序还体现出了算法设计中的常用的分而治之(Divide Conquer Combine)的思想。非比较排序非常巧妙的不需要比较就对一组数据进行了排序,非常有趣并且有启发意义。

Sept. 14, 2022, 3:36 p.m.

回溯算法

回溯算法(backtrack algorithm)实际上就是深度优先搜索(DFS), 它首先将下一个节点添加进去,然后进行下一步运算,如果到后面发现不满足条件就转回来,将之前添加的节点去除重新添加其他的节点,然后进行运算,直到最后满足条件或是将所有可能都枚举完成。由于回溯算法需要枚举出多种可能很有可能会导致超时,所以在使用回溯算法的时候通常会进行一些优化,也就是剪枝操作。

June 13, 2022, 11:57 a.m.

图论笔记

学习《introduction to algorithm》图论部分所做的笔记,包括里面算法的C++代码实现。

June 12, 2022, 9:22 a.m.

大数算法

一般的程序设计语言都只能保存有限大小的数字类型,如果遇到超过所能表示的最大值就会发生溢出导致计算错误,对于过大的数字一般使用字符串表示,对于字符串表示的数字进行四则运算则称为大数算法。大数算法不算很难但是综合性较高,在刷题的时候经常遇到,听说在面试的时候也经常被问到。大数算法的核心就是模拟,从最低位开始一位一位的操作并且将进位与借位保存下来,加入下一轮操作。

June 11, 2022, 2:37 p.m.

算法复杂度的表示方法

算法复杂度的几种表示方法笔记

June 6, 2022, 5:15 p.m.

二分查找总结与实践

刷完Leetcode二分查找专题的总结

May 19, 2022, 2:51 p.m.

位操作

日常使用和刷题所积累下来的一些关于位操作经验技巧

April 19, 2022, 10:54 a.m.