数据结构和算法
文章平均质量分 88
数据结构和算法
linovce
公众号【秀宇笔记】欢迎各位大佬提出宝贵意见!
展开
-
面试经典|快速排序思想及实现
如何对数据高效排序一直是一个重要的问题,算法中排序分为内部排序和外部排序,而内部排序又分为插入排序、交换排序、选择排序、归并排序等。我们平时常用的冒泡排序和快速排序就属于交换排序。所谓交换就是根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。本篇笔记记录快速排序的思想及实现。原创 2021-10-29 14:53:28 · 473 阅读 · 3 评论 -
算法经典|二分查找详解
查询算法是非常重要的算法之一,即便不从事算法相关岗位,在CRUD的开发岗中,查询也是常见的业务操作。通常我们是从头到尾查询一个顺序表(数组、链表等)得到我们的结果,这种方式的时间复杂度为O(n),但针对一些特殊的数据,可以采取更加高效的方式查询。原创 2021-09-18 16:00:57 · 3094 阅读 · 0 评论 -
用Java实现平衡二叉树
平衡二叉树的定义在谈平衡二叉树之前,首先了解一下二叉排序树。空树或者具有以下特性的二叉树就是二叉排序树:若左子树非空,则左子树上所有结点关键字的值均小于根节点的关键字的值。若右子树非空,则右子树上所有结点关键字的值均大于根节点的关键字的值。左右子树本身也分别是一棵二叉排序树。根据上述定义可知二叉排序树的中序遍历是一个递增的有序序列。但是二叉排序树的平均查找长度与二叉树的形态有关,如...原创 2020-11-10 12:30:29 · 1868 阅读 · 0 评论 -
二叉树之建树和七种遍历(含Java代码)
在刷LeetCode的过程中,想把二叉树的一系列常用操作做一个整理,这篇文章总结了通过Java实现二叉树的创建树、层序遍历、递归和非递归的前中后遍历。原创 2019-11-19 14:30:04 · 1333 阅读 · 0 评论 -
分治法解决循环赛日程表
分治法解决循环赛日程表问题描述设有n=2^k个运动员要进行羽毛球循环赛,现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次。 (2)每个选手一天只能比赛一次。 (3)循环赛一共需要进行n-1天。 由于n=2^k,显然n为偶数。分治法求解思路按分治策略,将所有的选手分为两半,n个选手的比赛日程表就可以通过为n/2个选手设计的比赛日程表来决定。原创 2018-01-13 23:12:26 · 2912 阅读 · 0 评论 -
布线问题(附代码)
布线问题在N*M的方格阵列中指定一个方格的点a,一个方格的点b,求出a到b的最短布线方案(即最短路径)。布线时只能走直线或直角,不能走斜线。 问题分析1、将方格抽象为顶点,中心方格和相邻四个方向(上、下、左、右)能通过的方格用一条边连起来。这样,可以把问题的解空间定义为一个图。2、该问题是特殊的最短路径问题,特殊之处在于用布线走过的方格数代表布线的长度,布线时每布一个方格,布线长度累加1。 3原创 2017-12-27 17:08:24 · 2485 阅读 · 0 评论