十大经典排序算法 (上)
目录 1.1冒泡排序 1. 算法步骤 3.什么时候最快 4. 什么时候最慢 5.代码实现 1.2选择排序 1. 算法步骤 2. 动图演示 3.代码实现 1.3 插入排序 1. 算法步骤 2. 动图演示 3. 算法实现 1.4 希尔排序...
目录 1.1冒泡排序 1. 算法步骤 3.什么时候最快 4. 什么时候最慢 5.代码实现 1.2选择排序 1. 算法步骤 2. 动图演示 3.代码实现 1.3 插入排序 1. 算法步骤 2. 动图演示 3. 算法实现 1.4 希尔排序...
迪杰斯特拉算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。 基本思想 通过Dijkstra计算图G...
一:深度优先搜索DFS 我们以图为例,图是由一些小圆点(顶点)和连接这些小圆点的直线(边)组成。例如: 现在我们想要遍历这个图,我们可以从1号顶点开始,遍历就是将图中每一个顶点都访问一次。使用深度优先搜索会得到这么一个结果 他们身上标注的数...
洗牌算法问题为: 有一个大小为 100 的数组,里面的元素是从 1 到 100 按顺序排列,怎样随机的从里面选择 1 个数? 最简单的方法是用rand()系统自动生成一个1-100的数,然后去数组找对应的位置即可。 进一步,问题扩展为: 有...
算法的时间复杂度和空间复杂度 算法效率 时间复杂度 空间复杂度 常见的时间复杂度以及复杂度的oj练习 算法效率 算法的复杂度 算法在编写成可执行程序后,运行时需耗费时间资源和空间资源(内存)资源。因此衡量一个算法的好坏,一般是从时间和空间两...
一、排序的概述 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 八大排序都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排序算法,他们之间关系如下: 什么是排序的稳定性? 稳定性:假定在...
一、两个数是否相同 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 基本思路: 对二叉树进行遍历,判断每一个结点的结构和数值是否相同,不同直接返...
一、二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 基本思路: 我们在二叉树的基本操作中已经实现了一次二叉树的层序遍历,但我们是直接进行打印,这里我们想把二叉树的每一层的...
这三也是经典的二叉树的三种方法 二叉树的前序遍历 递归实现 public class Main4 { static ArrayList<TreeNode> list = new ArrayList<TreeNode>...
链表是最基本的数据结构,凡是学计算机的必须的掌握的,在面试的时候经常被问到,关于链表的实现,百度一下就知道了。在此可以讨论一下与链表相关的练习题。 1、在单链表上插入一个元素,要求时间复杂度为O(1) 解答:一般情况在链表中插入一元素是在末...