快速排序的三个步骤: 选择基准:在待排序列中,按照某种方式挑出一个元素,作为 “基准”(pivot) 分割操作:以该基准在序列中的实际位置,把序列分成两个子序列。此时,在基准左边的元素都比该基准小…
分类:数据结构
面试整理
面试整理 年前换工作,进行了面试,准备面试的过程学习到了一些东西,在此整理出来,供大家参考。 一:算法问题 1:各排序及时间复杂度(必问) 冒泡排序 合并排序 快速排序 最坏时间复杂度 n2 nlog(n) n2 最好时…
剑指offer-栈的压入,弹出序列
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出…
BZOJ 3224: Tyvj 1728 普通平衡树 题解
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3224 思路:裸平衡树,直接模拟即可。 代码(SBT): #include <cstdio> #incl…
2738: 矩阵乘法(梁 盾)(分块+主席树)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2738 实在不想吐槽这个标题什么了,本来想找几道矩阵乘法的水题水水的,结果却成了裸数据结构。。。把X分成sqrt(n…
BZOJ-1084: [SCOI2005]最大子矩阵(DP)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1084 开始是以为是什么神题,后来发现m<=2那就直接DP O(n^3)水掉了。。。 代码: #include…
『算法』摊还分析
聚合分析(aggregate analysis) 一个 n 个操作的序列最坏情况下花费的总时间为, 则在最坏情况下, 每个操作的摊还代价为 如栈中的 push, pop 操作都是 , 增加一个新操作 multipop, …
BZOJ-3040: 最短路(road)(配对堆优化Dijkstra)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3040 用二叉堆优化Dijkstra算法的话是O( ( n + m ) log n ),明显会TLE,所以要用斐波那…
Hash索引和BTree索引区别
Hash仅支持=、>、>=、<、<=、between。BTree可以支持like模糊查询 索引是帮助mysql获取数据的数据结构。最常见的索引是Btree索引和Hash索引。 不同的引擎对于索引有…
BZOJ-1853: [Scoi2010]幸运数字 && 2393: Cirno的完美算数教室(容斥原理)
题目: http://www.lydsy.com/JudgeOnline/problem.php?id=1853 http://www.lydsy.com/JudgeOnline/problem.php?id=2393 …
剑指Offer-40 有序数组的两数和(首尾逼近法)
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。(对应每个测试案例,输出两个数,小的先输出。) 对于 i + j = sum,当i和j大小越…
《数据结构》排序 —— 插入+冒泡+选择(C++实现)
前言:《数据结构》作为计算机专业的一门重点学科,无论是将来考研、就业,对其的考察都是重中之重,之前的文章已经对此进行过论述。作为考察程序员“编程能力”的一种方式,考验的是我们如何将数据结构的思想用编程语言精确的编码出来。…