随笔分类 - 算法(主要在leetcode上刷题,代码放在github上,需要的可以关注一波)
摘要:1.题目一 给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,大于num的数放在数组的右边,要求额外空间复杂度为O(1),时间复杂度为O(N)。 2.题目2(荷兰国旗问题) 给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于n
阅读全文
摘要:1.归并排序时间复杂度为O(N*logN),额外的空间复杂度O(N)。 2.递归行为:一个数组的排序,先将左侧部分排好序,然后将右侧部分排好序,最后整体利用外排序的方式整体排好。 3.归并排序:将两个(或者两个以上)有序表合并成一个新的有序表,即把待排序的序列分成若干个子序列,在把有序的子序列合并为
阅读全文
摘要:1.递归算法的时间复杂度: master公式的使用:T(N)=a*T(N/b)+O(N^d) master公式的适用范围:划分的子过程规模是一样的情况下,只是发生了a次,这种情况下才能运用master来求解。 (1)log(b,a)>d >复杂度为O(N^log(b,a)) (2)log(b,a)=
阅读全文
摘要:1. 对数器概念和使用 (1)有一个你想要的测的方法a (2)实现一个绝对正确但是复杂度不好的方法b (3)实现对比的方法 (4)把方法a和方法b对比很多次来验证方法a是否是正确的 (5)如果有个样本使得对比出错,打印出样本分析是哪个方法出错的 (6)当样本数量很多的时候,对比测试依然正确,可以确定
阅读全文
摘要:1、原理:从整个待排序列中选出一个元素插入到已经有序的子序列中去,得到一个有序的、元素加一的子序列,直到整个序列的待插入元素为0,则整个序列全部有序。 2、思路: (1)设置监视哨r[0],将待插入的记录值赋值给r[0]; (2)设置开始查找的位置j; (3)在数组中搜索,搜索 中将第j个记录后移,
阅读全文
摘要:1.原理:每次从待排序的数据元素中选出最小(或者最大)的一个元素,存放在已排好序列的起始位置(或者末尾位置),直到全部待排序的数据元素排完。 2.思路: (1)第一趟排序,在待排序数据arr[1],arr[2]...arr[n]选出最小的数据,将其与arr[1]进行交换。 (2)第二趟排序:在待排序
阅读全文
摘要:0.如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式。 1.原理:比较两个相邻的元素,将值大的元素交换到右边 2.思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。 (1)第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。 (2)比较第2和第3个数,将
阅读全文
摘要:0.关于二分查找: 1.二分查找作为一种常见的查找算法,将原本的线性时间提升到了对数的范围,大大缩短了搜索的时间,但是有一个前提,那就是必须是在有序的数据中进行查找。 2.算法思想:二分查找又叫做折半查找。每次取出中间未知的值与待查的关键字进行比较,如果中间位置的关键字比待查关键字大,则在前半部分循
阅读全文
摘要:1.算法的四个特性: (1)有穷性; (2)确定性; (3)可行性; (4)输入和输出; 2. (1)穷举法(万能算法):如求N个数的全排列 8皇后问题 (2)分而治之(建而治之): 二分查找:减为治之 归并排序:分而治之 (3)贪心 最小生成树Prim Kruskal 单源最短路径 Dijkstr
阅读全文
摘要:一、栈和队列 1.定义: 2.操作:入栈/队列、出栈/队列、判断满/空 3:空间复杂度:O(n) 4:单次操作的时间复杂度:O(1) 5:区别: (1)先进先出(FIFO) (2)先进后出FILO 6:数组和链表皆可(线性表) 指针(辅助变量) 栈顶/底指针 队头/尾指针 关键:出入元素同时移动指针
阅读全文
摘要:第一题:题目内容 Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input woul
阅读全文
摘要:冒泡排序的时间复杂度是O(N^2) 冒泡排序的思想: 每次比较两个相邻的元素, 如果他们的顺序错误就把他们交换位置 比如有五个数: 12, 35, 99, 18, 76, 从大到小排序, 对相邻的两位进行比较 第一趟: 第一次比较: 35, 12, 99, 18, 76 第二次比较: 35, 99,
阅读全文
摘要:一、复杂发 1.常见的时间复杂度分析方法 (1):循环次数 (2)均摊分析 (3)递归式 主定理 2.复杂度: (1)O(1):基本运算、+、 -、 *、 /、 % 、寻址 (2)O(logn) :二分查找 (3)O(n^1/2):枚举约数 (4)O(n):线性查找 (5)O(n^2):朴素最近点对
阅读全文