
算法与数据结构
算法与数据结构
陨落星辰wjj
这个作者很懒,什么都没留下…
展开
-
链表中对指定节点的增删改操作
package com.wjj;public class listnode { static class ListNode{ ListNode next; int value; public ListNode(int val){ this.value = val; } } public static ListNode insert(ListNode head,int x,int y){ .原创 2020-09-22 16:24:00 · 220 阅读 · 0 评论 -
贪心算法的区间调度问题,返回可以执行的任务号
1.对 map 集合的 value 数组的第二列(任务的结束时间)做升序操作2.每次都选取结束时间最早的工作,主要是用map记录了一下可以执行的任务号import java.util.*;import java.util.stream.Collectors;public class demo05 { public static List solve(Map<Integer,int[]> map){ List<Integer> task_num原创 2020-09-05 20:46:05 · 169 阅读 · 0 评论 -
基于线性探测法的散列表(并行数组)
为了解决散列表中的碰撞冲突问题,除了基于拉链法的方式,我们还可以采用基于线性探测法并行数组的方式解决。基本思想:当碰撞发生时(当一个键的散列值已经被另一个键所占用),我们就检查散列表中的下一个位置(将索引值+1),若为空,则将此散列值赋给发生碰撞的键。若不为空,则不断将散列表中的位置+1,直到出现散列值为空的位置为止。------------牺牲数组内存的方式解决碰撞冲突的问题,若冲突则放在下...原创 2020-03-16 16:16:48 · 704 阅读 · 0 评论 -
基于拉链法的散列表------结合顺序查找的无序链表
散列表的主要目的就是将构造的符号表中的键值用过散列函数再次转化为数组的索引。但也可能存在两个或者多个键散列到相同索引的情况。而拉链法则是为了解决这一碰撞冲突的过程。拉链法的基本思想:当存在多个键散列到同一索引值时,拉链法会将N个无序的链表值平均散列到大小为M的数组中,即每一个数组值存放多个无序链表值(这些无序链表值的散列值都相同)。例如st[0]中存放多个散列值为0的无序链表。如图所示...原创 2020-03-16 11:48:32 · 318 阅读 · 0 评论 -
红黑二插查找树(简称红黑树)--------java实现
2-3查找树,由2-结点或者3-结点组成:2-结点:含有一个键(及其对应的值)和两条链接,左链接指向的2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该链接。3-结点:含有两个键(及其对应的值)和三条链接,左链接指向的2-3树的键都小于该结点,中链接指向的2-3树中的键都位于该节点的两个键之间,右链接指向的2-3树中的键都大于该结点。红黑树既是二叉查找树,也是2-3树,那么...原创 2020-03-15 22:13:00 · 99 阅读 · 0 评论 -
二叉查找树
一颗二叉查找树,其中每个结点都含有一个Comparable的键(以及键所关联的值),且每个结点的键都大于其左子树中任意结点的键而小于右子树的任意结点。...原创 2020-03-15 12:41:25 · 88 阅读 · 0 评论 -
有序数组中的二分查找实现符号表-----------------java实现(使用平行数组的方式)
主要核心点为其中的rank()函数,使用了二分查找法的思想,从而达到在创建键值对的时候使Key数组达到有序性。public class BinarySearchBT <Key extends Comparable<Key>,Value>{ private Key[] keys; private Value[] values; private i...原创 2020-03-14 22:02:36 · 120 阅读 · 0 评论 -
符号表的基本介绍以及无序链表的顺序查找实现----------java实现
符号表是一种存储键值对的数据结构,支持常用的两种操作:1.put插入操作 2.get查找操作,根据给出的键返回相应的值原创 2020-03-14 19:13:00 · 205 阅读 · 0 评论 -
java实现堆排序算法
public class StackOrder { public static void sort(Comparable []a){ int N = a.length-1; // for循环实现基本的堆构造 for (int k = N/2 ; k >= 1 ; k--) { sink(a,k,N); ...原创 2020-03-09 11:57:05 · 89 阅读 · 0 评论 -
三向切分的快速排序----------对于存在大量重复元素的数组,比标准快速排序效率更高
public class Quick3way { public static void sort(Comparable []a , int lo , int hi){ if (lo>=hi) return; int lt = lo; int i = lo+1; int gt = hi; Comparable t = a[lo]; ...原创 2020-03-04 14:43:21 · 400 阅读 · 0 评论 -
java实现快速排序算法以及快速排序算法存在的不足之处
public class Quick { public static void sort(Comparable []a){ sort(a,0,a.length-1); } private static void sort(Comparable[] a, int lo, int hi) { if (hi<=lo+M){ //M值用具体...原创 2020-03-03 11:45:21 · 241 阅读 · 0 评论 -
java实现自顶向下的归并排序----------基于基本的归并排序
public class ToDownMerge { private static Comparable[] aux; public static void sort(Comparable []a){ aux = new Comparable[a.length]; sort(a,0,(a.length-1)); } public ...原创 2020-03-02 15:29:38 · 154 阅读 · 0 评论 -
java实现基本的归并排序
public class Merge { private static Comparable aux[]; private static void sort(Comparable[] a) { aux = new Comparable [a.length]; sort(a,0,a.length-1); } public static...原创 2020-03-02 14:04:13 · 97 阅读 · 0 评论 -
java数据结构中各种树的区别----------图文结合
1. 二叉树 1.1 满二叉树 1.2 完全二叉树2. 二叉查找树3. 平衡二叉树 3.1 平衡查找树之AVL树 3.2 平衡二叉树之红黑树4. B树5. B+树本文中对数据结构中常见的几种树的概念和用途进行了汇总,不求严格精准,但求简单易懂。原创 2020-07-16 17:14:54 · 2014 阅读 · 0 评论 -
美团的 leaf 算法分布式 id 生成介绍
感觉写的还可以:适合小白上手https://juejin.im/post/5e61b4f26fb9a07cb83e2eee转载 2020-07-16 10:35:32 · 418 阅读 · 0 评论 -
Twitter的雪花算法 SnowFlake 的底层源码实现与分析-----java实现
ID 自增算法 snowflake雪花算法的底层源码实现与分析原创 2020-07-15 21:08:21 · 583 阅读 · 0 评论 -
java实现希尔排序(shell)排序----------插入排序的改进版
java实现希尔排序(shell)排序----------插入排序的改进版原创 2020-03-02 12:48:05 · 94 阅读 · 0 评论 -
java实现自底向上归并排序--------基于基本的归并排序
java实现自底向上归并排序--------基于基本的归并排序原创 2020-03-02 16:03:48 · 324 阅读 · 0 评论