数据结构与算法
Lucky Di
这个作者很懒,什么都没留下…
展开
-
KMP解决字符串匹配问题
1、问题描述解决字符串1是否包含字符串2,包含则返回第一次出现位置,否则返回-1。2、解决思路步骤:1 先得到子串的部分匹配表2使用部分匹配表完成KMP匹配3、代码`在这里插入package test.commonArgrithm.kmp;import java.util.Arrays;public class Kmp {public static void main(String[] args) { // TODO Auto-generated method stub原创 2021-02-03 10:53:23 · 130 阅读 · 0 评论 -
排序算法(三):归并、基数排序的JAVA实现
排序算法(三):归并、基数排序的JAVA实现常见的8大排序算法分类如下:归并、基数都需要开辟新的存储空间,以内存换时间,加快排序速度。一、归并分治思想。治阶段:最后一步为例二、基数基数排序:因为0-9,所以创建10个桶(数组),按照待排序数组数据个位数的大小,对应放入桶中(即数组),如15,325 放在5桶中,对应新开辟的数组下标5。按照顺序重新放入原来数组中。第二轮:按照待排序数组数据十位数的大小,依次类推。。。直到完成最大位的数据的放桶,生成。代码实现:详情思路见代码注释pack原创 2021-01-11 13:40:00 · 114 阅读 · 0 评论 -
排序算法(二):希尔、快速排序的JAVA实现
排序算法(二):希尔、快速排序的JAVA实现常见的8大排序算法分类如下:一:希尔排序1.1思路(1)增量gap需要循环来实现,直到增量<1。(2)在每组操作时,类似冒泡、选择进行排序1.2代码实现package test.sort;import java.util.Arrays;/** * @author shkstart * @create 2021-01-09 19:47 */public class Shellsort { public static原创 2021-01-11 11:03:57 · 116 阅读 · 0 评论 -
排序算法(一):冒泡、选择、插入的JAVA实现
排序算法(一):冒泡、选择、插入的JAVA实现常见的8大排序算法分类如下:冒泡、选择、插入属于最基本的排序算法,其时间复杂度为O(n^2)。一、冒泡1.1基本思路(1)第一轮比较:以从小到大的顺序,数组第一个数据与第二个数据比较,较大值放在后面,即第二个位置(2)接着比较数组第2个数据与第3个数据,较大值放在后面。(3)接着比较数组第3个数据与第4个数据,较大值放在后面,依次类推。(4)第二轮比较:同第一轮的做法,但只比较到数组倒数2、3的位置,因为数组最后一个位置已放了最大值(5)同理原创 2021-01-11 10:01:29 · 131 阅读 · 0 评论 -
单向环形链表之约瑟夫问题(JAVA实现)
约瑟夫问题标题原创 2021-01-09 14:40:08 · 207 阅读 · 1 评论 -
环形队列的数组实现(JAVA)
环形队列的数组实现(JAVA)队列是先进先出的线性结构,环形结构则是队列已满后,取出数据,则可以在取出的位置上继续添加数据。PS:学自尚硅谷的总结,打call!1基本思路队列:(1)front为队列头的前一个元素、rear队列的最后元素 。默认均-1。front随取出数据+1,rear随添加数据+1。(2) 队列满的条件:rear=MAX-1;数组最大容量。空的条件:front=rear;(3) 添加操作:判断是否满,尾指针rear+1;环形队列:(1)front为队列第一个,rear原创 2021-01-08 21:26:46 · 218 阅读 · 0 评论 -
递归回溯之八皇后问题(JAVA实现)
递归之八皇后问题1、问题描述在国际象棋棋盘,每行棋盘放置一个皇后,使得所有皇后均不在一条直线或者对角线上。2、解决思路将第一个皇后放在第一行第一列第二个皇后放在第二行第一列,判断是否与上面放置的皇后冲突,冲突则继续放在第二列,第三列重复放置直到第八个皇后会有回溯的产生,即找到第一个皇后放在第一行第一列的初始条件解法后,会将第一个皇后放在第一行第二列(实际上,在第一种初始下,2 3…皇后都会有回溯,详情见代码)第一个皇后放在第一行第二列,重复上述,然后第一个皇后放在第一行第三列。。。继续.原创 2021-01-08 15:25:14 · 2878 阅读 · 9 评论 -
数组、单向链表实现栈的功能(Java实现)
数组、单向链表实现栈的功能(Java实现) 栈是一种线性存储结构,存入的数据先进后出。如先后存入1,2,3,取出的数据依次是3,2,1。1、数组实现1.1思路(1)定义一个top代表栈顶 初始化-1(因为数组默认0开始); stack 数组(2)入栈操作:top++ ;stack[top]=data;(3)出栈操作:int value=stack[top];top–;return value;1.2代码实现package test.stack;import java.ut原创 2021-01-08 19:03:14 · 202 阅读 · 1 评论