![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
一只懒惰的小虫子
这个作者很懒,什么都没留下…
展开
-
数据结构与算法-排序-冒泡排序
package sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/** * @author taoke * @desc 冒泡排序 * @email 1504806660@qq.com * @date 2022/1/5 */public class BubbleSort { public static void main(String[] args) {原创 2022-01-05 15:45:34 · 175 阅读 · 0 评论 -
数据结构与算法-排序-桶排序(基数排序)
package sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/** * @author taoke * @desc 桶排序(基数排序) * @email 1504806660@qq.com * @date 2022/1/7 */public class BucketSort { public static void main(String[] arg原创 2022-01-07 17:01:52 · 206 阅读 · 0 评论 -
数据结构与算法-排序-归并排序
package sort;import java.util.Arrays;/** * @author taoke * @desc 归并排序 * @email 1504806660@qq.com * @date 2022/1/7 */public class MergeSort { public static void main(String[] args) { int[] arr = {8, 4, 5, 7, 1, 3, 6, 2}; sort(原创 2022-01-07 14:40:18 · 304 阅读 · 0 评论 -
数据结构与算法-排序-选择排序
package sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/** * @author taoke * @desc 选择排序 * @email 1504806660@qq.com * @date 2022/1/5 */public class SelectSort { public static void main(String[] args) {原创 2022-01-05 17:18:37 · 263 阅读 · 0 评论 -
数据结构与算法-排序-希尔排序
希尔排序介绍希尔排序是一种插入排序,它是对插入排序经过改进后的更高效排序算法。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序,随着增量逐渐减少,每组的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法终止。package sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/** * @author taoke * @desc 希尔排序原创 2022-01-06 15:08:49 · 149 阅读 · 0 评论 -
数据结构与算法-排序-快速排序
package sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/** * @author taoke * @desc 快速排序 * @email 1504806660@qq.com * @date 2022/1/6 */public class QuickSort { public static void main(String[] args) {原创 2022-01-06 17:46:19 · 283 阅读 · 0 评论 -
数据结构与算法-排序-插入排序
package sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/** * @author taoke * @desc 插入排序 * @email 1504806660@qq.com * @date 2022/1/5 */public class InsertSort { public static void main(String[] args) {原创 2022-01-06 10:26:04 · 200 阅读 · 0 评论 -
数据结构与算法-排序-堆排序
package sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/** * @author taoke * @desc 堆排序 * @email 1504806660@qq.com * @date 2022/1/12 */public class HeapSort { public static void main(String[] args) {原创 2022-01-12 14:28:49 · 138 阅读 · 0 评论 -
数据结构与算法-递归(迷宫问题)
package com.tk.recursion;/** * @author taoke * @desc 递归-迷宫问题 * @email 1504806660@qq.com * @date 2022/1/2 14:12 */public class maze { public static void main(String[] args) { int[][] map = new int[8][7]; for (int i = 0; i < 7;.原创 2022-01-02 14:30:41 · 481 阅读 · 0 评论 -
数据结构与算法-递归(8皇后问题)
package com.tk.recursion;/** * @author taoke * @desc 8皇后问题 * @email 1504806660@qq.com * @date 2022/1/2 15:39 */public class Queue8 { /** * 最多8个皇后 */ public static int max = 8; /** * 数组棋盘 */ public static int[]原创 2022-01-02 16:47:25 · 224 阅读 · 0 评论 -
常用的十大算法-弗洛伊德算法
介绍和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点最短路径的算法,即计算各个顶点之间的最短路径,而迪杰斯特拉算法用于计算某一顶点到其他顶点的最短路径。弗洛伊德算法每一个顶点都是出发访问点,所以需要将每一个顶点都看作被访问的顶点,求出每一个顶点到其他顶点的最短路径。算法分析1、设置顶点vi到vk的最短路径已知为Lik,顶点vk到vj的最短路径为Lkj,顶点vi到vj的路径为Lij,则vi到vj的最短路径为:min(Lik+Lkj),vk的取值为所有顶点,则可获得原创 2022-01-28 10:19:46 · 5826 阅读 · 0 评论 -
常用的十大算法-迪杰斯特拉算法
介绍迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径,它的主要特点是以起始点为中心向外层扩展(广度优先思想),直到扩展到终点为止。算法过程设置出发顶点为v,顶点集合V{v1,v1,vi…},v到V中各顶点的距离构成集合Dis,Dis(d1,d2,di),Dis集合记录v到图中各顶点的距离(自身可以看作0,v到vi的距离对应di)1、从Dis中选择值最小的di并移出Dis集合,同时移出V集合中对应的顶点vi,此时,v到vi即为最短路径2、更新Dis集合,更原创 2022-01-27 14:27:41 · 844 阅读 · 0 评论 -
常用的十大算法-克鲁斯卡尔算法(最小生成树问题、公交车站问题)
克鲁斯卡尔算法介绍克鲁斯卡尔算法(kruskal),是用来求加权连通图的最小生成树的算法。基本思想是,按照权值从小到大的顺序选择n-1条边,并保证这n-1条边不构成回路。具体做法是,首先构造一个只含n个顶点的森林,然偶依权值从小到大从连通图中选择边加入到森林中,并使森林不产生回路,直到森林变成一棵树为止。应用场景-公交车站问题某城市新增7个站点(A,B,C,D,E,F,G),现在需要把7个站点连通,各个站点的距离用边表示(权),如何修路保证各个站点能够连通,并且总的修建公路总里程最短?算法分析原创 2022-01-26 11:41:12 · 1155 阅读 · 0 评论 -
常用的十大算法-普利姆算法
普利姆算法介绍普利姆算法求最小生成树,也就是在包含n个顶点的连通图中,找出只有(n-1)条边包含所有n个顶点的连通子图,也就是极小连通子图普利姆算法步骤1、设G=(V,E)是连通图,T=(U,D)是最小生成树,U,V是顶点集合,E,D是边的集合。2、若从顶点u开始构造最小生成树,则从集合V中取出顶点u放入集合U中,顶点标记v的visit[u]=13、若集合U中顶点ui与集合V-U中的顶点vj之间存在边,则寻找这些边中权值最小的边,但不能构成回路,将顶点vj加入集合U中,将边(ui,vj)加入集合原创 2022-01-25 15:38:57 · 581 阅读 · 0 评论 -
常用的十大算法-贪心算法
介绍1、贪心算法是指在对问题进行求解时,在每一步选择中都采取最好或者最优的选择,从而希望能够导致结果是最好或者最优的算法。2、贪心算法所得到的结果不一定是最优的结果,但是都是相对近似最优解的结果。应用假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号。广播台覆盖地区K1北京、上海、天津K2广州、北京、深圳K3成都、上海、杭州K4上海、天津K5杭州、大连思路分析1、遍历所有的广播原创 2022-01-24 17:53:23 · 514 阅读 · 0 评论 -
常用的十大算法-KMP算法
package algorithm;/** * @author taoke * @desc KMP算法寻找最小字符串索引 * @email 1504806660@qq.com * @date 2022/1/24 */public class KMP { public static void main(String[] args) { String str = "ababc"; int i = kmpSearch(str, "abc", pmt(str)原创 2022-01-24 15:36:30 · 238 阅读 · 0 评论 -
常用的十大算法-暴力匹配算法
package algorithm;/** * @author taoke * @desc 暴力匹配算法 * @email 1504806660@qq.com * @date 2022/1/24 */public class ViolenceMatch { public static void main(String[] args) { int i = match("666 667", "667"); System.out.println(i);原创 2022-01-24 10:40:14 · 403 阅读 · 0 评论 -
常用的十大算法-动态规划(背包问题)
package algorithm;/** * @author taoke * @desc 动态规划算法(01背包问题) * @email 1504806660@qq.com * @date 2022/1/21 */public class PackageProblem { public static void main(String[] args) { //物品重量 int[] w = {1, 4, 3}; //物品价格原创 2022-01-21 17:42:22 · 451 阅读 · 0 评论 -
常用的十大算法-分治算法
分治算法分治算法从字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或者更多的相同的问题或相似的问题,再把子问题分成更小的子问题,直到最后子问题可以简单的求解,原问题的解即子问题的解合并。如排序算法(快速排序,归并排序),傅里叶变换,分治算法可以求解的一些经典问题。分治算法可以求解的一些经典问题1、二分搜索2、大数整除法3、棋盘覆盖4、合并排序5、快速排序6、线性时间选择7、最接近点对问题8、循环赛日程表9、汉诺塔分治算法的基本步骤分解:将原问题分解为若干个规模较小,相互独立原创 2022-01-21 14:03:52 · 1981 阅读 · 0 评论 -
常用的十大算法-二分查找(非递归)
package algorithm;/** * @author taoke * @desc 二分查找(非递归) * @email 1504806660@qq.com * @date 2022/1/21 */public class BinarySearch { public static void main(String[] args) { int[] arr = {1, 3, 4, 6, 8, 10}; int i = search(arr, 3);原创 2022-01-21 11:10:34 · 290 阅读 · 0 评论