![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Insane'
这个作者很懒,什么都没留下…
展开
-
基数排序
基数排序(桶排序)介绍 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或 bin sort,顾 名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用 基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法 基数排序(Radix Sort)是桶排序的扩展 4) 基数排序是 1...原创 2020-03-19 16:08:09 · 73 阅读 · 0 评论 -
归并排序
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 再来看看治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和[1,2,...原创 2020-03-17 17:47:53 · 83 阅读 · 0 评论 -
快速排序
https://blog.csdn.net/nrsc272420199/article/details/82587933 快速排序法介绍 快速排序(Quicksort)是对冒泡排序的一种改进。快速排序,说白了就是给基准数据找其正确索引位置的过程. 基本思想是 1.先从数列中取出第一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复...原创 2020-03-16 13:50:25 · 83 阅读 · 0 评论 -
希尔排序
简单插入排序存在的问题 数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1(最小), 这样的过程是: {2,3,4,5,6,6} {2,3,4,5,5,6} {2,3,4,4,5,6} {2,3,3,4,5,6} {2,2,3,4,5,6} {1,2,3,4,5,6} 结论: 当需要插入的数是较小的数时,后移的次数明显增多,对效率有影响. 希尔排序法介绍 希尔排序是希尔(Donal...原创 2020-03-12 12:00:26 · 77 阅读 · 0 评论 -
插入排序
插入排序介绍 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 思想 插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适...原创 2020-03-10 14:41:17 · 76 阅读 · 0 评论 -
选择排序
基本介绍 选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。 思想 选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从 arr[0]~arr[n-1]中选取最小值, 与 arr[0]交换,第二次从 arr[1]~arr[n-1]中选取最小值,与 arr[1]交换,第三次从 arr[2]~arr[n-1]...原创 2020-03-09 16:39:34 · 73 阅读 · 0 评论 -
冒泡排序
基本介绍 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部。 优化: 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在 排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。 冒泡过程的(图解) ...原创 2020-03-07 15:11:45 · 77 阅读 · 0 评论 -
排序
排序算法的介绍 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 排序的分类: 内部排序: 指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。 外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。 常见的排序算法分类(见下图): ...原创 2020-03-07 14:27:20 · 87 阅读 · 0 评论 -
哈希表
Hashtable也叫散列表,速度快。有很多种结构,最流行的是顺序表+链表,主结构是顺序表 1、哈希表是如何添加数据的: 1、计算哈希吗(调用hashCode(),结果是一个int值,整数的哈希吗取自身) 2、计算在哈希表中储存的位置y=k(x)=x%11,x:哈希吗,k(x)函数,y在哈希表中存储的位置。 3、存入哈希表 情况一:一次添加成功 情况二:多次添加成功(出现了冲突,调用equa...原创 2020-03-01 16:09:32 · 165 阅读 · 0 评论 -
查找
一、线性表查找 顺序查找 存储结构可以是顺序表,也可以是链表。逐个比较查询,如果找到则返回数据或索引,如果没找到返回null。时间复杂度T(n)=O(n) 折半查找 又叫二分查找,这种查找方法需要待查的表满足两个条件:1.必须是顺序存储结构。2.按着关键字大小有序排列。 二、查找树 二叉查找/排序树 BST 是一颗空树或具有一下性质的二叉树: 1、若左子树不空,则左子树上所以节点的值均小于根节点...原创 2020-02-29 15:07:05 · 107 阅读 · 0 评论 -
树和二叉树
一、树的基本概念 树是由一个集合以及在该集合上定义的一种关系构成的。集合中的关系称的结点,所定义的关系为父子关系最上层为根节点树是n(n>=o)个结点的有限集 a.一颗空树,b.有一个根节点的树,c.有许多子结点 结点的度:结点拥有子结点的数目 树的度:树内各节点最大的度数 树的深度:树中结点的最大层树 有序树:各节点从左到右有次序 二、二叉树 每个结点的度都不超过二的有序树,称为二...原创 2020-02-27 12:14:44 · 195 阅读 · 0 评论 -
栈和队列
一、栈 栈(stack)是运算受限的线性表,只允许在表的一端进行添加和删除(先进后出,后进先出) 插入删除的一端叫做栈顶(top),表的另一端叫栈底(bottom) 插入–>进栈(push) 删除–>出栈(pop) 得到栈顶元素(Peek) 栈的存储结构 顺序栈,类似于顺序表,底层使用数组 链栈,类似于单链表,节点 二、队列 队列(queue)简称队,也是一种运算受限的线性表,只允许...原创 2020-02-27 11:17:25 · 119 阅读 · 0 评论 -
线性表
一个线性表是n个具有相同特性的数据元素的有限序列。 线性表的存储结构 1、顺序表-顺序存储结构 Vector线程安全 ArrayList线程不安全 优点: 在内存中分配连续的存储空间,只存储数据,不需要存储地址信息。位置就隐含着地址 索引查询效率高,每个节点对于一个序号,可由该序号直接算出节点的存储地址 缺点: 插入删除效率低 提前分配固定数量的空间,容易导致浪费 按着内容查询效率低,需要逐个判...原创 2020-02-25 15:32:54 · 127 阅读 · 0 评论 -
数据结构算法与入门
一、基本概念 数据:描述客观事物的一种集合. 数据项:具有原子性,是不可分割的最小数据单位 数据元素:是数据的基本单位,通常由若干个数据项组成 数据对象:是相同数据元素的集合 数据结构=逻辑结构+存储结构+(运算,依赖存储结构) 顺序存储 优点:节省空间,节点之间的逻辑关系没有占用空间 缺点:插入和删除需要移动元素,效率低 链式存储: 优点:插入、删除灵活 缺点:查找比顺序慢 二、算法 算法:计...原创 2020-02-25 15:19:00 · 86 阅读 · 0 评论