算法知识点
luSpet
go、python后端开发
展开
-
常用排序算法总结
文章目录冒泡排序选择排序插入排序快速排序归并排序堆排序参考资料 冒泡排序 原理:扫描整个数组,每次比较相邻的两个数,逆序交换,第iii次扫描就可以找到第iii大的数,n−1n-1n−1次扫描后,就可以完成排序 时间复杂度:O(n2n^2n2) 空间复杂度:O(1) 稳定性:稳定 void bubble(vector<int> &vi) { for(int i = v...原创 2020-04-13 21:55:45 · 127 阅读 · 0 评论 -
二分查找
文章目录查找大于等于 val 的第一个元素索引查找大于 val 的第一个元素索引总结查找大于等于 val 的第一个元素索引查找大于 val 的第一个元素索引 在序列中使用二分查找,可以在O(logn) 的时间内查找到需要的元素索引,二分查找的原理很容易理解,但是在代码中有很多细节需要注意,在决定认真思考总结下二分查找之前,我一直随缘判断,直到返回正确结果 一般分为两种情况 查找大于等于 va...原创 2020-04-05 22:55:39 · 168 阅读 · 0 评论 -
康托展开和逆康托展开
定义 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。 算法 其中 ai 表示原数的第 i 位数字后面比自身小的数字的个数 例如 51423 = 4 * 4! + 0 * 3! + 2 * 2! + 0 * 1! + 0 * 0! = 100 每个 ai 的得出依据是: 5...原创 2020-02-04 21:54:27 · 249 阅读 · 0 评论