算法
migule-
这个作者很懒,什么都没留下…
展开
-
TopK算法问题解题技巧
TopK问题就是让你在给定序列中寻找最大或者最小的K个数,这类问题通常有三类结局方法。方法一:使用排序将序列排序后输出最大或最小的K位,此类方法简单但是一般不符合面试要求。 class Solution { public int[] getLeastNumbers(int[] arr, int k) { int[] vec = new int[k]; Arrays.sort(arr); for (int i = 0; i < k; ++i)原创 2021-05-31 23:25:29 · 103 阅读 · 0 评论 -
KMP算法
Java实现KMP算法KMP 算法就利用之前判断过信息, 通过一个 next 数组, 保存模式串中前后最长公共子序列的长度, 每次回溯时, 通过 next 数组找到, 前面匹配过的位置, 省去了大量的计算时间。KMP算法核心之一是部分匹配表,部分匹配” 的实质是, 有时候, 字符串头部和尾部会有重复。 比如, ” ABCDAB” 之中有两个” AB” , 那么它的” 部分匹配值” 就是 2(” AB” 的长度) 。 搜索词移动的时候, 第一个” AB” 向后移动 4 位(字符串长度-部分匹配值) ,原创 2021-05-14 19:58:46 · 53 阅读 · 0 评论 -
排序算法之桶排序
Java实现桶排序算法步骤:(1)建立10个桶,每个桶大小与待排数组大小相等,同时建立一个一维数组存储每个桶中的数据个数(2)计算出序列中的最大值,确定最大值的位数来确定要循环的次数(3)遍历一次数组,对数据取余后放入对应的桶中,同时计数+1(4)遍历完成后将桶中的数据依次取出放入原数组以备下一次遍历使用,同时清空计数(5)重复(3)(4)代码:public static int[] radixSort(){ int[] arr = new int[]{2,1,5,9,156原创 2021-05-14 15:27:02 · 96 阅读 · 0 评论 -
排序算法之快速排序
Java实现快速排序快速排序是比较常用的算法之一,也是作为程序员必须要掌握的一种算法,快排的时间复杂度为O(n logn),空间复杂度为O(logn),但它是一种不稳定的排序算法。快速排序的递归实现步骤如下:从数列中挑出一个元素,称为 “基准”(pivot);重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;递归地(recursive)把小于基准值元原创 2021-05-14 14:28:46 · 56 阅读 · 0 评论 -
排序算法之插入排序
Java实现插入排序插入排序是稳定的排序方法,平均时间复杂度为O(n^2)。插入排序的思想是将第一个元素认为已经有序,取出下一个元素从后往前扫描比较并插入序列中。具体步骤如下:(1)从第一个元素开始,该元素可以认为已经被排序;(2)取出下一个元素,在已经排序的元素序列中从后向前扫描;(3)如果该元素(已排序)大于新元素,将该元素移到下一位置;(4)重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;(5)将新元素插入到该位置后;(6)重复步骤2~5。代码如下:public stati原创 2021-05-14 14:01:16 · 42 阅读 · 0 评论 -
java实现普里姆算法
算法步骤:设 G=(V,E)是连通网, T=(U,D)是最小生成树, V,U 是顶点集合, E,D 是边的集合若从顶点 u 开始构造最小生成树, 则从集合 V 中取出顶点 u 放入集合 U 中, 标记顶点 v 的 visited[u]=1若集合 U 中顶点 ui 与集合 V-U 中的顶点 vj 之间存在边, 则寻找这些边中权值最小的边, 但不能构成回路, 将顶点 vj 加入集合 U 中, 将边(ui,vj) 加入集合 D 中, 标记 visited[vj]=1重复步骤②, 直到 U 与 V 相等原创 2021-03-26 16:49:25 · 123 阅读 · 0 评论 -
排序算法之冒泡排序
冒泡排序顾名思义像冒泡一样每次排序产生一个最大或最小的数放到最后面,常见解决方法是使用双层for循环,第一层遍历数组第二层进行比较排序,详细步骤参考代码。public class Algorithm{ public static void main(String args[]){ int a[] = Bubblesort(); for(int i = 0;i < a.length;i ++){ System.out.println(a[i]); } } public原创 2021-03-10 21:47:50 · 41 阅读 · 0 评论