![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Data Structure and Algorithms
量子孤岛
90后嵌入式工程师,喜欢写作、读书。希望通过文字和大家共同进步!
展开
-
冒泡排序法(C++实现)
看图秒懂代码!原创 2018-04-07 16:09:02 · 114698 阅读 · 31 评论 -
快速排序法(c++实现+面试模板)
def quicksort(array): if len(array) < 2: # base case, arrays with 0 or 1 element are already "sorted" return array else: # recursive case pivot = array[0] # sub-array of all...原创 2019-02-04 16:24:15 · 234 阅读 · 0 评论 -
高精度算法总结
高精度算法总结(C++)A+a,A−a,A∗a,A/aA+a,A-a,A*a,A/aA+a,A−a,A∗a,A/a 四种大整数运算核心:将A的每一位放在数组里,且第0位存放个位数字,即逆序存放高精度加法核心:Ai+Bi+tAi + Bi + tAi+Bi+t参考题目:LeetCode989#include <iostream>#include <cstrin...原创 2019-12-22 15:31:16 · 207 阅读 · 0 评论 -
二叉树的遍历总结
二叉树的遍历总结前序遍历[leetcode144]遍历方式:“根结点-左孩子-右孩子”递归(Recursive)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeN...原创 2019-12-09 16:48:09 · 213 阅读 · 0 评论 -
排序算法总结
排序算法总结插入排序O(n2)O(n^2)O(n2)void insertSort(int a[], int n){ for(int i = 1; i < n; i++){ int tmp = a[i], j; for(j = i; j > 0 && tmp < a[j-1];j--) a[j...原创 2019-09-17 22:15:52 · 237 阅读 · 1 评论 -
树结构复习要点
二叉树的性质二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。性质1:非空二叉树中的叶子结点的数量等于双分支结点(度为2的结点)的数量加1. 即:n0=n2+1n_0=n_2+1n0=n2+1性质2:二叉树的第i层上最多有2i−12^{i-1}2i−1个节点。性质3:高度(或深度)为i的二叉树最多有2i−12^i...原创 2019-08-26 10:48:19 · 176 阅读 · 0 评论 -
背包九讲总结
背包九讲01背包问题完全背包问题多重背包问题混合背包问题二维费用的背包问题分组背包问题背包问题方案数求背包问题的方案有依赖的背包问题1. 01背包问题给定n中物品和容量为C的背包,物品i的重量的wi,其价值为vi。面对每个物品,我们只有选择拿与不拿,不能选择装入物体的一部分,也不能装入同一个物品多次。决策:为了背包中物品总价值最大化,第 i件物品应该放入背包中吗 ?...原创 2019-05-15 10:35:23 · 385 阅读 · 0 评论 -
二分查找模板
题目给定一个长度为 n+1 的数组nums,数组中所有的数均在 1∼n 的范围内,其中 n≥1。请找出数组中任意一个重复的数,但不能修改输入的数组。样例给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。返回 2 或 3。思考题:如果只能使用 O(1) 的额外空间,该怎么做呢?(分治,抽屉原理) O(nlogn)抽屉原理:n+1 个苹果放在 n 个抽屉里,那么...原创 2019-05-17 09:35:39 · 270 阅读 · 0 评论 -
位运算总结
常用的位运算有6个:&|~^ 相当于不进位的加法<< << 1 相当于x2 上取整 << 3相当于x8>> >> 1 相当于/2 下取整技巧篇lowbit运算1:n & -n == n的二进制表示里最右边的1,所以 n & -n == n 表示n的2的整数次幂,n & -n &l...原创 2019-05-23 11:03:25 · 248 阅读 · 0 评论 -
归并排序模板
题目给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第- -行包含整数n。第二行包含n个整数(所有整数均在1~10^9范围内),表示整个数列。输出格式输出共一行,包含n个整数,表示排好序的数列。数据范围1<n<100000输入样例:3 1 2 4 5输出样例:1 2 3...原创 2019-07-27 12:15:57 · 204 阅读 · 0 评论 -
查找算法总结
顺序查找基本思想int search(int a[], int n, int key){ for (int i = 0; i < n; i++) if (a[i] == key) return i + 1; return 0;}经典查找——设置哨兵int search(int a[], int n, int key){ ...原创 2019-06-14 08:59:23 · 241 阅读 · 0 评论 -
BFS和DFS
23. 矩阵中的路径题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。注意:输入的路径不为空;所有出现的字符均为大写英文字母;样例matrix=[ ["A","B","C","E"], ...原创 2019-05-24 21:13:36 · 542 阅读 · 0 评论 -
选择排序
# Finds the smallest value in an arraydef findSmallest(arr): # Stores the smallest value smallest = arr[0] # Stores the index of the smallest value smallest_index = 0 for i in range(1, len(...原创 2019-02-03 23:19:23 · 174 阅读 · 0 评论 -
广度优先搜索(breadth-first-search)
from collections import dequedef person_is_seller(name): return name[-1] == 'm'graph = {}graph["you"] = ["alice", "bob", "claire"]graph["bob"] = ["anuj", "peggy"]graph["alice"] = ["peggy"...原创 2019-03-21 09:21:14 · 307 阅读 · 0 评论 -
Dijkstra Algorithm
与BFS不同的是每条路径多了权重1.步骤:找到最便宜的节点,即可在最短时间内前往的节点对于该节点的邻居,检查是否有前往它们的更短路径,如果有,就更新其开销。重复这个过程,直到对图中的每个节点都这样做了计算最终路径。2.注意只适用于有向无环图(directed acyclic graph, DAG)不适用于包含负权重边的图(Bellman-Ford algorithm)3....原创 2019-03-21 14:05:52 · 226 阅读 · 0 评论 -
递归
Loops may achieve a performance gain for your program. Recursion may achieve a performance gain for your programmer. Choose which is more important in your situation!使用循环,程序的性能可能更高;使用递归,程序可能更容易理解。如何...原创 2019-02-04 16:21:59 · 177 阅读 · 0 评论