数据结构
光明顶上的5G
作者5G,目前专注于Java后端技术的学习
展开
-
C++ 值传递、指针传递、引用传递详解
C++ 值传递、指针传递、引用传递详解 最近写了几篇深层次讨论数组和指针的文章,其中提到了“C语言中,所有非数组的形式参数传递均以值传递形式” 数组和指针背后——内存角度 语义"陷阱"---数组和指针 而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~ 下文会通过例子详细说明哦 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值。...转载 2018-08-18 13:49:41 · 165 阅读 · 0 评论 -
单向链表的反转
遍历法 static Node reverse(Node head){ if(head == null){ return null; } Node pre = head; Node cur = head; Node reHead = null; //如果当前节点为空结束循环 while(cur != null){ //保存下一个节点以免丢失 ...转载 2019-03-19 18:18:59 · 255 阅读 · 0 评论 -
手写快排
前言 快速排序是一种很重要的排序算法,我花了不少时间去理解并总结它,希望可以通过图文的方式让你快速理解快速排序,并能手撸一个快排。 快速排序简介 快速排序是一种很不错的排序算法,算法复杂度为n*logn。快排使用了分而治之的思想,每次排序是都找到一个基准(我们学习时经常使用第一个作为基准),然后把小于基准的元素放到基准元素的左边,大于基准的元素放到基准元素的右边,这样一次排序下来,基准元素左边都...转载 2019-03-19 18:21:00 · 411 阅读 · 0 评论 -
AVL树与红黑树
AVL树(http://baike.baidu.com/view/593144.htm?fr=aladdin),又称(严格)高度平衡的二叉搜索树。其他的平衡树还有:红黑树、Treap、伸展树、SBT。 注:使用 "nil 叶子"或"空(null)叶子",它不包含数据而只充当树在此结束的指示。这些节点在绘图中经常被省略,导致了这些树好象同上述原则相矛盾,而实际上不是这样。与此有关的结论是所有...转载 2019-03-20 08:58:39 · 354 阅读 · 0 评论 -
B树、B-树、B+树详解
(B树)B-树 是一种多路搜索树(并不是二叉的): 1.定义任意非叶子结点最多只有M个儿子;且M>2; 2.根结点的儿子数为[2, M]; 3.除根结点以外的非叶子结点的儿子数为[M/2, M]; 4.每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字) 5.非叶子结点的关...转载 2019-03-23 23:06:17 · 768 阅读 · 0 评论