首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Python数据结构与算法

    数据结构算法-(8)---队列(Queue)

    队列(Queue):是一种有次序的数据集合,其特征是新数据项的添加总发生在一端 (通常称为“尾rear”端)

    31810编辑于 2024-01-18
  • 来自专栏CodeGuide | 程序员编码指南

    《Java 数据结构算法》第8章:树(BST)

    算法归功于 Conway Berners-Lee 和 David Wheeler ,他们在 1960 年使用它在磁带中存储标记数据。最早和流行的二叉搜索树算法之一是 Hibbard 算法。 三、二叉搜索树结构实现 二叉搜索树是整个树结构中最基本的树,同时也是树这个体系中实现起来最容易的数据结构。但之所以要使用基于二叉搜索树之上的其他树结构,主要是因为使用数据结构就是对数据的存放和读取。 而实现二叉搜索树是最好的基础学习,了解基本的数据结构后才更容易扩展学习其他树结构。 排查到节点72,将72这个准备替换待删元素的节点,右子节点73进行位置交换,过程 4.1 相同。 一线互联网java 工程师、T8架构师,开发过交易&营销、写过运营&活动、设计过中间件也倒腾过中继器、IO板卡。不只是写Java语言,也搞过C#、PHP,是一个技术活跃的折腾者。

    72330编辑于 2022-12-13
  • 来自专栏CodeGuide | 程序员编码指南

    《Java 数据结构算法》第8章:树(AVL)

    ❞ 一、前言 二、AVL树数据结构 三、AVL树代码实现 1. 左旋 2. 右旋 3. 左旋 + 右旋 4. 常见面试题 一、前言 AVL树历史 在计算机科学中,AVL 树以其两位苏联发明家Georgy Adelson-Velsky和 Evgenii Landis的名字命名,他们在 1962 年的论文“信息组织算法 它是一种自平衡二叉搜索树(BST),这是发明的第一个这样的数据结构。 二、AVL树数据结构 AVL 自平衡二叉树的出现,其目的在于解决二叉搜索树退化成链表的问题。 三、AVL树代码实现 对于 AVL 树的实现 BST 二叉搜索树相比,在树的节点定义上多了一个树高的属性。也有些AVL树使用的是平衡因子的属性,就是通过树高计算后的结果。 一线互联网java 工程师、T8架构师,开发过交易&营销、写过运营&活动、设计过中间件也倒腾过中继器、IO板卡。不只是写Java语言,也搞过C#、PHP,是一个技术活跃的折腾者。

    73850编辑于 2022-12-13
  • 来自专栏运维开发王义杰

    数据结构算法:排序算法

    排序算法概述 排序是计算机科学中的一个基础问题,排序算法的目的是将一串数字或字母按照特定的顺序重新排列。通常有升序和降序两种方式。 2. 常见的排序算法 2.1 冒泡排序 冒泡排序是一种简单的排序算法。它重复地遍历待排序的数列,一次比较两个元素,如果顺序错误就交换过来。 2.2 快速排序 快速排序是一种分而治之的排序算法。 排序算法的比较 效率:不同的排序算法有不同的时间复杂度。 稳定性:稳定排序算法会保留相等元素的相对顺序。 空间复杂度:一些排序算法可能需要额外的内存空间。 4. 排序算法的应用 排序算法在许多领域都有广泛应用,例如数据库查询、数据分析、机器学习等。 总结 排序算法是计算机科学中最基础的问题之一。 通过学习和理解不同的排序算法,我们可以更好地理解算法设计的原则和思想,以及如何选择合适的算法来解决实际问题。

    36720编辑于 2023-09-26
  • 来自专栏JavaPark

    数据结构算法算法简介

    什么是算法 什么是算法?简单来讲,算法就是用于描述解决问题的方法。而现今普遍对算法的定义为:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令含有一个或多个操作。 存储量指的是算法在执行过程中所需的最大存储空间,主要指算法程序运行时所占用的内存或外部存储空间。针对同一问题,算法所需空间越少,则算法效果越好,所需空间越多,则算法效果越差。 算法效率衡量方法 前边讲了算法的特性以及算法的设计要求,但都没有明确的方式来衡量一个算法的好坏。为了衡量一个算法的好坏,又提出了时间复杂度和空间复杂度的概念。 ,表示算法的存储空间数据规模间的增长关系,用 来代替; 常用空间复杂度 算法执行所需临时空间不随某一变量 n 的大小而变化,则该算法空间复杂度为一个常量,表示为 ; int num1 主要介绍了算法的定义、算法的特性、算法的设计要求以及算法效率的衡量方法。

    1.3K30编辑于 2022-05-23
  • 来自专栏魔法书

    数据结构算法】排序算法

    3.7 排序算法 概述 比较排序算法 算法 最好 最坏 平均 空间 稳定 思想 注意事项 冒泡 O(n) O( nlogn nlogn) O(1) N 选择 堆排序的辅助性较强,理解前先理解堆的数据结构 比较最好情况需要额外判断选择O( n^2 )O( n^2 )O( n^2 )O(1)N比较交换次数一般少于冒泡堆O( nlogn )O( nlogn )O( nlogn )O(1)N选择堆排序的辅助性较强,理解前先理解堆的数据结构插入 = 2f(4) + 8 f(4) = 2f(2) + 4 f(2) = 2f(1) + 2 f(1) = 1 f(8) = 8 + 24 f(4) = 4 + 8 f(2) = 2 + 2 f(1) 快速排序 单边循环(lomuto分区)要点 选择最右侧元素作为基准点 j 找比基准点小的,i 找比基准点大的,一旦找到,二者进行交换 交换时机:j 找到小的,且 i 不相等 i 找到 >=

    34210编辑于 2024-10-08
  • 来自专栏Android小知识

    算法数据结构

    什么是算法 算法是解决各种类型问题的方法,算法有优劣之分,可依据时间复杂度和空间复杂度进行判断,但大多数的算法都是用时间来换空间,或者用空间来换时间,很像古人说的鱼和熊掌不可兼得。 我们程序员就是要寻求一种平衡,不断地去优化算法从而得到时间和空间的兼顾的算法。 为什么要学习算法 优化用户体验,减少用户等待时间。 让用户能够使用我们写成的程序(即使用户的内存空间较小的情况)。 什么是数据结构 数据结构是对数据进行管理,从而可以高效的增删改查数据。 为什么学习数据结构 数据结构算法是相辅相成的关系,不同的算法需要使用不同的数据结构

    42210发布于 2020-02-18
  • 来自专栏coder

    数据结构算法:递归算法

    递归算法 什么是递归? 函数直接或间接调用自身的过程称为递归,相应的函数称为递归函数。使用递归算法,可以很容易地解决某些问题。 稍后将讨论的迭代技术相比,它具有某些优点。对于可以用其相似的子任务来定义的任务,递归是最好的解决方案之一。例如:数字的阶乘。 递归的性质 使用不同的输入多次执行相同的操作。 算法步骤 在函数中实现递归的算法步骤如下: 第1步: 定义基本情况:确定解决方案已知最简单情况。这是递归的停止条件,因为它防止函数无限地调用自身。 步骤2: 定义递归情况:用更小的子问题来定义问题。 递归函数使用 LIFO(后进先出)结构,就像堆栈数据结构一样。 递归的基本条件是什么? 在递归程序中,提供了基本情况的解决方案,并用较小的问题来表达较大问题的解决方案。 case return 1; else return n*fact(n-1); } 如果调用fact(10),它将调用fact(9)、fact(8)

    66710编辑于 2024-01-29
  • 来自专栏机器视觉CV

    数据结构算法-

    代码 边界条件测试案例 边界条件:输入非数值 正常大的整数 小的数值(0 )大的数值 ---- def big_num_sum(num1: str, num2: str) -> str: " 这个程序还可以换成用数组的形式写,这里就不在给出,同时还可对以上代码进行优化,如:只需要遍历最短的那个即可,这样对于很大整数加上一个小的整数来说,效率会更高,占据的内存也会更小 本代码的时间复杂度是 O (n) 参考:《漫画算法

    51430发布于 2019-11-15
  • 来自专栏C++/python记录日志

    数据结构算法

    2、算法描述 假设我们得到了如下的叶结点,我们要一步一步构造哈夫曼树: Adr weight par lc rc 0 6 -1 -1 -1 1 5 -1 -1 -1 2 8 -1 -1 -1 3 12 算法思路Dijkstra算法相同,不过直接对邻接矩阵进行操作,得出所有顶点间的路径,时间复杂度为O(n^3)。 1、算法实现 分别用Low、High、Mid表示待查找区间的下界、上界中间查找位置。 (递归函数)最坏是n^2 快速排序的一次划分算法从两头交替搜索,直到low和high重合,因此其时间复杂度是O(n);而整个快速排序算法的时间复杂度划分的趟数有关。 算法分析 问题分析:准确、完整地理解和描述问题 数学模型建立 算法设计选择:创造性的活动 算法表示:思想的表示形式 算法分析:算法时空特性分析 算法实现 程序调试:测试 结果整理文档编制 一、算法基本技巧

    1.8K21编辑于 2022-12-26
  • 来自专栏小赵的Java学习

    数据结构算法

      虽然这门课程叫数据结构,但很多时候都会讲到算法,以及他们之间的关系。市场上也  有不少书叫“数据结构算法分析”这样的名字。 有人可能就要问了,那你到底是只讲数据结构呢,还是和算法一起讲? 事实上,数据结构算法也是类似的关系。只谈数据结构,当然是可以,我们可以在很短的时间就把几种重要的数据结构介绍完。听完后,很可能你没什么感觉,不知道这些数据结构有何用处。 不过话说回来,现在好多大学里,通常都是把“算法”分出一门课单独讲的,也就是说,在《数据结构》课程中,就算谈到算法,也是为了帮助理解好数据结构,并不会详细谈及算法的方方面面。 算法设计的要求   刚才我们谈到了,算法不是唯一的。也就是说,同一个问题,可以有多种解决问题的算法。 那么如何分析一个算法的时间复杂度呢?即如何推导大О阶呢? 用常数1取代运行时间中的所有加法常数。 在修改后的运行次数函数中,只保留最高阶项。 如果最高阶项存在且不是1,则去除这个项相乘的常数。

    1.1K30编辑于 2022-12-02
  • 来自专栏Java社区

    算法数据结构

    任何时候学习算法都不晚,而且越早越好,这么多年,你听说过技术过时,什么时候听说过算法过时,不仅没有过时,因为机器学习、大数据的要求,算法变得越来越重要了 声明: 资源来源于互联网,仅供学习和交流,请于下载

    68050发布于 2018-06-29
  • 来自专栏魔法书

    数据结构算法】初识算法

    时间复杂度 下面的查找算法也能得出之前二分查找一样的结果,那你能说出它差在哪里吗? f(n) 是实际执行代码行数 n 的函数 g(n) 是经过化简,变化趋势 f(n) 一致的 n 的函数 渐进上界 渐进上界(asymptotic upper bound):从某个常数 n 绿色 O(log(n)) ,对数时间 蓝色 O(n) ,线性时间,算法时间数据规模成正比 橙色 O(n*log(n)) ,拟线性时间 红色 O(n^2) 平方时间 黑色朝上 O(2^n) + 1 = 5 ,后任 a_5 = 7 rightmost(4) + 1 = 5 ,后任 a_5 = 7 求最近邻居: 前任和后任距离更近者 习题 1) 时间复杂度估算 用函数 f(n) 表示算法效率数据规模的关系 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题 例如 输入:nums = [5,7,7,8,8,10], target = 8 输出:[3,4] 输入:nums = [5,7,7,8,8,10

    39510编辑于 2024-09-23
  • 来自专栏喵叔's 专栏

    算法数据结构】--算法基础--数据结构概述

    数据结构的选择和设计对于解决特定问题以及优化算法的性能至关重要。不同的数据结构具有不同的优缺点,开发者需要根据问题的需求来选择最合适的数据结构数据结构算法密切相关,它们共同构建了计算机科学和软件工程的基础。 二、 线性数据结构 线性数据结构是一种数据结构,其中数据元素之间存在一对一的关系,即每个元素都有唯一的前驱和后继。 线性数据结构是理解数据组织和处理的基础,也是深入学习其他数据结构算法的前提。 三、非线性数据结构 非线性数据结构是一种数据结构,其中数据元素之间的关系不是一对一的,不按照线性顺序组织。 深入理解这些数据结构将有助于开发者更有效地解决复杂问题并优化算法。非线性数据结构在计算机科学和软件工程中发挥着重要作用,是数据组织和处理的关键工具。 选择合适的数据结构对于解决特定问题和优化算法至关重要,数据结构是计算机科学和软件工程的基础。

    60240编辑于 2023-10-09
  • 来自专栏M不作声

    数据结构算法

    常见的数据结构 线性表 链表是一个线性结构,同时也是一个天然的递归结构,链表增加了节点的指针域,空间开销比较大。 循环单链表是链表的最后一个节点指向第一个节点,构成一个链环。 树二叉树 树,是由n个有限节点组成一个具有层次关系的集合,是一种非常重要的数据结构二叉树的区别在于每个节点的值都比他的左子树大,比右子树小 图 图,是一种比树更为复杂的数据结构。 先序遍历算法:先访问根节点,然后访问左节点,最后访问右节点。 preTraversal() { this. _pre(node.right) } } 中序遍历算法:先访问左节点,然后访问根节点,最后访问右节点。 midTraversal() { this.

    52720发布于 2020-07-14
  • 来自专栏一个会写诗的程序员的博客

    数据结构算法

    数据结构算法 数据结构 什么是数据结构? 逻辑、存储、运算 数据(data) 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 [2] 数据结构的研究内容是构造复杂软件系统的基础,它的核心技术是分解抽象。通过分解可以划分出数据的3个层次;再通过抽象,舍弃数据元素的具体内容,就得到逻辑结构。 算法的应用场景 程序=数据结构+算法 程序设计是什么? 程序设计的艺术 参考资料 $ 彭军、向毅主编.数据结构算法:人民邮电出版社,2013年 石玉强,闫大顺主编.数据结构算法:中国农业大学出版社,2017.02:第5页 张青,王囡囡著.工程软件开发技术

    89720发布于 2020-11-12
  • 来自专栏趣学算法

    数据结构8讲 KMP算法

    数据结构8讲 KMP算法 讲这个算法之前,我们首先了解几个概念: 串:又称字符串,是由零个或多个字符组成的有限序列。 最笨的办法就是穷举所有S的所有子串,判断是否T匹配。 例如:S="abaabaabeca",T=" abaabe",求子串T在主串S中的位置。 tk≠tj:当两者不相等时,我们又开始了这两个串的模式匹配,找next[k]的位置tk′tj比较,程序中的处理,只需要把next[k]赋值给k,即k←next[k],然后再比较tktj是否相等,如果相等则 进入循环,判断满足T[j]==T[k],T[5]=T[2],则执行next[++j]=++k,即next[6]=3,此时j=6,k=3;       8. j=T[0],循环结束。 这样求解非常方便,迅速,但是也发现有一个问题:当S[i]≠T[j]时,j退回到next[j],然后S[i]T[k]比较。

    60720发布于 2018-09-13
  • 来自专栏xiaosen

    数据结构算法--8基数排序

    得到:32,52,13,93,94,54,17     *现在个位数的相对位置排好序了*

    15810编辑于 2024-03-15
  • 来自专栏喵叔's 专栏

    算法数据结构】--算法基础--算法设计分析

    一、贪心算法 贪心算法是一种解决优化问题的算法设计方法,其核心思想是在每一步选择当前状态下的最优解,从而希望最终达到全局最优解。下面将介绍贪心算法的原理、实现步骤,并提供C#和Java的实现示例。 三、分治算法 分治算法(Divide and Conquer)是一种用于解决问题的算法设计方法,它将问题分解成子问题,解决子问题并合并子问题的解以得到原问题的解。 通过将问题分解成子问题,然后合并子问题的解,实现了高效的排序算法。分治算法可用于解决各种复杂问题,是一种重要的算法设计方法。 四、回溯算法 回溯算法(Backtracking)是一种用于解决组合问题和搜索问题的算法设计方法,它通过不断尝试各种可能性来逐步构建解决方案,并在遇到无法继续或不符合条件的情况下回溯到上一步重新选择。 这些算法都有不同的应用领域和实现步骤,可根据问题特点选择合适的算法

    54021编辑于 2023-10-17
  • 来自专栏喵叔's 专栏

    算法数据结构】--算法基础--算法入门

    时间复杂度类似,空间复杂度也通常表示为一个函数,关于输入数据规模的增长情况。了解算法的空间复杂度有助于我们在有限的内存资源下进行程序设计和优化。 三、常见算法的时间复杂度 以下是一些常见算法的时间复杂度,按照从最低到最高的顺序排列: 常数时间复杂度 - O(1): 常数时间复杂度表示算法的执行时间输入规模无关,执行时间是一个常数。 线性时间复杂度 - O(n): 线性时间复杂度表示算法的执行时间输入规模成正比。 例如:遍历数组、查找未排序的列表中的元素。 平方时间复杂度 - O(n^2): 平方时间复杂度表示算法的执行时间输入规模的平方成正比。 例如:简单的嵌套循环遍历二维数组、冒泡排序。 立方时间复杂度 - O(n^3): 立方时间复杂度表示算法的执行时间输入规模的立方成正比。 例如:三重嵌套循环遍历三维数组。

    1.2K30编辑于 2023-10-09
领券