数据结构和算法
文章平均质量分 76
数据结构和算法
浑水摸鱼仙君
此剑抚平天下不平事,此剑无愧世间有愧人
展开
-
数据结构和算法基础(8)——排序算法
一、排序介绍1.分类1.1 内部排序和外部排序。内部排序值将需要处理的所有数据都加载到内存中进行排序.外部排序借助外部存储进行排序。常见的内部排序有:1.2 非线性时间比较类排序和线性时间非比较类排序非线性时间比较类排序:通过比较来决定元素间的相对次序,由于时间复杂度不能突破O(nlogn),因此成为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此被称为线性时间非比较类排序。2.排序算法一张图分原创 2022-04-24 14:20:44 · 774 阅读 · 0 评论 -
数据结构和算法基础(7)——算法复杂度
一、排序算法1.算法复杂度算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。(算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度。)2.时间复杂度时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了原创 2022-04-20 11:32:57 · 135 阅读 · 0 评论 -
数据结构和算法基础(6)——常用十种算法
一、二分查找非递归算法1.介绍(1) 二分查找法只适用于从有序的数列中进行查找,将数列排序后再进行查找。(2) 二分查找法的运行时间为对数时间O(log以2为底n的对数)。2.代码二、分治算法1.介绍(1) 字面上解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题。再把子问题分成更小的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题解的合并。(2) 分治算法的应用有:二分搜索,大整数乘法,棋盘覆盖,合并排序,快速排序,线性时间选择,最接近点对问题,循坏原创 2022-04-02 10:18:32 · 1688 阅读 · 0 评论 -
数据结构和算法基础(5)——图(Graph)
一、介绍1、为什么要有图前面学习了线性表和树。线性表局限于一个直接前驱和一个直接后继;树也只能有一个直接前驱。当我们需要表示多对多的关系时,就用到了图。2.基本概念① 顶点(vertex)② 边(edge)③ 路径④ 无向图,顶点之间的连接没有方向。⑤ 有向图,顶点之间的连接有方向。⑥ 带权图,边带权值,也叫网。3.图的表示方式有两种,二维数组表示(邻接矩阵);链表表示(邻接表)。二、图的遍历1.介绍2.深度优先(DFS)原理先从初始访问结点出发,初始访问结点可能有多个原创 2022-02-25 17:14:56 · 485 阅读 · 0 评论 -
数据结构和算法基础(4)——树
一、概念1. 为什么需要树这种数据结构① 数组存储方式优点:通过下标方式访问元素,速度快。对于有序数组可以通过二分查找提高检测速度。缺点:如果要通过内容来查找元素的位置,或者插入删除值时,效率较低。② 链式存储方式优点:插入和删除操作效率较好。缺点:查找效率较低,需要从头开始依次访问链表中的每个数据项。③ 哈希表优点:插入删除和查询效率都非常高缺点:空间利用率不高,底层使用的是数组,并且某些单元没有被利用。哈希表中元素是无序的,不能按照固定的顺序来遍历哈希表中的元素。不能快速找出哈希表中原创 2022-02-22 09:28:03 · 881 阅读 · 0 评论 -
数据结构和算法基础(3)——查找算法
一、顺序查找顺序查找适合于线性表。顺序查找也称线性查找,属于无序查找算法。时间复杂度O(n)二、二分查找数组要有序元素必须是有序的。对于静态查找表,一次排序后不再变化,折半查找能得到不错的效率。但对于需要频繁执行插入或删除操作的数据集来说,维护有序的排序会带来不小的工作量。 // 找到一个 public static int binarySearch(int[] arr,int left,int right,int searchNum) { if (left <= righ原创 2022-01-12 09:58:33 · 661 阅读 · 0 评论 -
数据结构和算法基础(2)——递归
一、递归1.定义 程序调用自身的编程技巧称为递归( recursion)。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。 递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。2.解决什么问题?① 各种数学问题,原创 2021-12-15 10:52:45 · 986 阅读 · 0 评论 -
数据结构和算法基础(1)——数组、队列、链表和栈
一. 分类数据结构包括线性结构和非线性结构。线性结构线性结构作为最常用的数据结构,其特点是数据元素直接存在一对一的线性关系。线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的。链式存储的线性表称为链表,链表中存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息。线性结构包括:数组,队列,链表和栈。非线性结构非线性结构包括:二维数组,多维数组,广义表,数结构,图结构。二、稀疏数组(Sparse Array)原创 2021-12-14 09:16:31 · 664 阅读 · 0 评论