数据结构与算法
Joe.Smith
你写这些有什么用。。。。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode1095:山脉数组中查找目标值
【代码】LeetCode1095:山脉数组中查找目标值。原创 2024-10-23 17:41:20 · 198 阅读 · 0 评论 -
红黑树-Java实现
不管我们是执行插入还是删除操作,只要不满足上面的条件,就要通过旋转来保持平衡,而旋转是非常耗时的,由此我们可以知道。和红黑树相比,AVL树是严格的平衡二叉树,平衡条件必须满足(所有节点的左右子树高度差的绝对值不超过1)。红黑树是一种弱平衡二叉树(由于是弱平衡,可以看到,在相同的节点情况下,AVL树的高度低于红黑树)IO多路复用的epoll的实现采用红黑树组织管理的的的sockfd,以支持快速的增删改查。它的旋转次数少,所以对于搜索,插入,删除操作较多的情况下,我们就用红黑树。相对于要求严格的AVL树来说,原创 2024-10-23 15:40:40 · 287 阅读 · 0 评论 -
冒泡排序-Java实现
import java.util.Arrays;/** * 冒泡排序 */public class BubbleSort { public static void main(String[] args) { int[] arr = {10, 7, 2, 4, 7, 62, 3, 4, 2, 1, 8, 9, 19}; bubbleSort(arr); System.out.println(Arrays.toString(arr)); .原创 2021-01-05 20:50:24 · 101 阅读 · 1 评论 -
LRU、LFU算法Java实现
【代码】LRU、LFU算法Java实现。原创 2024-10-15 14:39:13 · 527 阅读 · 0 评论 -
synchronized相关知识
轻量级锁:当第二个线程过来获取锁,并且获取成功,则升级为轻量级锁,对应Markword变化如下:在当前线程的栈帧中建立一个名为锁记录(Lock Record)的空间,拷贝对象头的Markword到栈帧的Lock Record,然后将对象头的Markword更新为指向Lock Record的指针,并将Lock Record的owner指针指向对象头的Markword。当前持有锁的线程执行完毕唤醒下一个线程时,会先判断_EntryList是否为空,如果不为空就唤醒头节点,如果为空就唤醒_cxq栈顶结点。原创 2024-09-29 11:11:38 · 429 阅读 · 0 评论 -
Java实现二分查找
Java实现二分查找原创 2022-10-08 16:53:06 · 259 阅读 · 0 评论 -
反转单链表
public class ReverseNode { public static void main(String[] args) { //构造链表 Node head = new Node(0); Node node1 = new Node(1); Node node2 = new Node(2); Node node3 = new Node(3); Node node4 = new Node(4);.原创 2021-01-05 21:03:59 · 137 阅读 · 1 评论 -
堆排序-Java实现
基本概念:一,完全二叉树:①深度为N的完全二叉树,从作为第一层的根节点开始,处最后一层外,第N层的元素个数都必须是2的N-1次方;②最后一行的元素,都要紧贴在左边。换句话说,每一行的元素都要从最左边开始安放,两个元素之间不能有空闲。完全二叉树的性质:最后一个非叶结点是第n/2个结点。n为完全二叉树的节点总数。当前节点为i,则左叶子节点为2*i+1;右叶子节点为2*i+2。二,堆我们假设有这样一颗完全二叉树,在满足最为完全二叉树的基础上,对于任意一个拥有父节点的子节点,其数值均不小原创 2021-01-05 20:59:21 · 135 阅读 · 0 评论 -
希尔排序-Java实现
import java.util.Arrays;/** * 希尔排序: * 先将序列分成较多个子序列分别进行排序,再分成较少个子序列分别进行排序,直到最后为一个序列排序。 */public class ShellSort { public static void main(String[] args) { int[] arr = {49, 38, 65, 97, 76, 13, 27, 50}; shellSort(arr); Syste.原创 2021-01-05 20:57:39 · 114 阅读 · 0 评论 -
简单插入排序
/** * 插入排序--简单插入排序 */public class InsertSort { public static void main(String[] args) { int[] arr = {12, 15, 9, 20, 6, 31, 24}; insertSort(arr); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i].原创 2021-01-05 20:56:28 · 116 阅读 · 1 评论 -
简单选择排序
一、基本思想:①从所给数组中选择最小的值,如果该位置不是该趟遍历中的起始值,则交换位置。②在剩下的数组中继续重复①。二、代码实现:import java.util.Arrays;/** * 选择排序--简单选择排序 */public class SelectionSort { public static void main(String[] args) { int[] arr = {10, 7, 2, 4, 7, 62, 3, 4, 2, 1, 8, 9,原创 2021-01-05 20:55:31 · 157 阅读 · 0 评论 -
归并排序
/** * 归并排序 */public class MergeSort { public static void main(String[] args) { int[] a = {49, 38, 65, 97, 76, 13, 27, 50}; mergeSort(a, 0, a.length - 1); System.out.println("排好序的数组:"); for (int e : a) System.out.prin.原创 2021-01-05 20:53:31 · 90 阅读 · 0 评论 -
Java实现快速排序
import java.util.Arrays;/** * 快排 */public class QuickSort { public static void main(String[] args) { int[] arr = {10, 7, 2, 4, 7, 62, 3, 4, 2, 1, 8, 9, 19}; quickSort(arr, 0, arr.length - 1); System.out.println(Arrays.toSt.原创 2021-01-05 20:52:05 · 107 阅读 · 0 评论
分享