![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 87
你是我的海啸
I hate void
展开
-
数据结构各种排序java实现个人总结
1、快速排序package algorithm; import java.util.Random; /** * 快速排序: * 取第一个数 a 作为基准元素,将数组分成三部分,比a小的元素放到一个数组里面,比a大的放到一个数组里面,再分别对这两个数组进行快排 * 时间复杂度:O(nlogn) * 不稳定 * 随机快排...原创 2018-02-27 10:17:30 · 268 阅读 · 0 评论 -
排序
9.1 排序的基本概念 根据排序时待排序的数据元素数量的不同,使得排序过程中涉及的存储器不同,可以将排序方法分为两类。一类是整个排序过程在内存储器中进行,称为内部排序;另一类是由于待排序元素数量太大,以至于内存储器无法容纳全部数据,排序需要借助外部存储设备才能完成,这类排序称为外部排序。 如果在待排序的序列中存在多个具有相同关键字的元素。假设K i =K j (1≤ i≤ n,1≤ ...原创 2018-03-12 15:15:17 · 656 阅读 · 0 评论 -
图——网状
图是由非空的顶点集合和一个描述顶点之间关系的集合组成。 深度优先搜索的基本方法是:从图中某个顶点发 v 出发,访问此顶点,然后依次从 v的未被访问的邻接点出发深度优先遍历图,直至图中所有和 v 有路径相通的顶点都被访问到;若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。广度优先搜索 遍历类似于树的层次遍历,它是树的按层遍历的推广。假...原创 2018-03-12 15:03:15 · 318 阅读 · 0 评论 -
树——非线性结构
树结构在计算机科学领域也有非常广泛的应用,例如文件系统、编译系统、数据库系统、域名系统等领域。树的递归定义如下: 树(tree )是 n(n ≥ 0)个结点的有限集。它 1) 或者是一棵空树(n = 0),空树中不包含任何结点。 2) 或者是一棵非空树(n > 0),此时有且仅有一个特定的称为 根(root )的结点; 当n > 1 时,其余结点可分为m(m &...原创 2018-03-12 15:02:54 · 3612 阅读 · 0 评论 -
查找
顺序查找与折半查找顺序查找的特点是,用所给的关键字与线性表中各元素的关键字逐个进行比较,直到成功或失败。算法的基本思想是:在查找表的一端设置一个称为“监视哨”的附加单元,存放要查找的数据元素关键字。然后从表的另一端开始查找,如果在“监视哨”位置找到给定关键字,则失败,否则成功返回相应元素的位置。折半查找又称为二分查找,这种查找方法需要待查的查找表满足两个条件:首先,查找表必须使用顺序的存储结构;其...原创 2018-03-12 14:54:40 · 199 阅读 · 0 评论 -
栈和队列
栈和队列是操作受限的线性表,是一种限定性的数据结构。public interface Stack { //返回堆栈的大小 public int getSize(); //判断堆栈是否为空 public boolean isEmpty(); //数据元素 e 入栈 public void push(Object e); //栈顶元素出栈 ...原创 2018-03-12 14:53:30 · 182 阅读 · 0 评论 -
选择排序和冒泡排序
1.选择排序 根据上一篇文章讲到的插入排序和希尔排序,我们把选择排序的数组也分为已排序部分和未排序部分。 图解选择排序 在用图来讲解选择排序之前,我们要先了解选择排序的规则。 选择排序的规则 就是重复执行以下的处理: 1.找出未排序部分最小值的位置min。 2.将min位置的元素与未排序部分的起始元素做对比,如果顺序错误则将它们进行就交换。 以数组a={5,4,8,7,9,3,...转载 2018-03-01 10:59:20 · 237 阅读 · 0 评论 -
插入排序和希尔排序
前言 排序是算法的基础,排序有很多种方法,有些方法实现起来很简单,但是效率较差,我们可以将这些排序的方法称之为初等排序。这篇文章我们就来学习初等排序中的插入排序和冒泡排序。 1.插入排序 插入排序比较容易想到,思路与打扑克时排列牌的顺序是类似的。比如我们左手拿牌,然后用右手将牌从左到右,从小到大来排序,这就需要我们把需要进行排列的牌抽出来放到合适的位置,并且不断的重复,直到牌的顺序排好,这个...转载 2018-03-01 10:54:41 · 126 阅读 · 0 评论 -
时间复杂度和空间复杂度
1.算法的效率 虽然计算机能快速的完成运算处理,但实际上,它也需要根据输入数据的大小和算法效率来消耗一定的处理器资源。要想编写出能高效运行的程序,我们就需要考虑到算法的效率。 算法的效率主要由以下两个复杂度来评估: 时间复杂度:评估执行程序所需的时间。可以估算出程序对处理器的使用程度。 空间复杂度:评估执行程序所需的存储空间。可以估算出程序对计算机内存的使用程度。 设计算法时,一般是要先...转载 2018-03-01 10:09:46 · 157 阅读 · 0 评论 -
数据结构快速排序详尽版(转载)
概述 在前面说到了两个关于交换排序的算法:冒泡排序与奇偶排序。 本文就来说说交换排序的最后一拍:快速排序算法。之所以说它是快速的原因,不是因为它比其他的排序算法都要快。而是从实践中证明了快速排序在平均性能上的确是比其他算法要快一些,不然快速一说岂不是在乱说? 本文就其原理、过程及实现几个方面讲解一下快速排序算法。 版权声明 著作...转载 2018-03-01 09:41:18 · 280 阅读 · 0 评论 -
算法刷题ING
1.宝石与石头 给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J中的字母不重复,J和S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。 示例 : 输入: J = "aA", S = "aAAbbbb" 输出: 3 class Solution { ...原创 2018-12-25 11:14:04 · 155 阅读 · 0 评论