首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏ellipse数据库技术

    数据结构算法4

    4)散列表(哈希表Hash)的存储和查找:处理冲突的方法:开地址法(线性探测法)、拉链法等 负载因子(装填因子)=表实际存储的结点个数/表的最大能存储结点个数(即表长) 二叉排序树:每个结点左子树的所有关键码值都小于该结点关键码值

    45140发布于 2019-08-16
  • 来自专栏Python数据结构与算法

    数据结构算法基础-(4)

    线性结构(Linear Structure)的概念 线性结构:是一种有序数据项的集合,其中每个数据项都有唯一的前驱和后继 ​ ​ 两端称呼并非关键,不同的数据结构的关键区别在于数据的增减方式 有的数据结构只允许数据项从一端添加 ,而有的数据结构则允许数据项从两端移除! ​ ​ 经常else, elif(相当于else if)配合使用。 for语句,遍列列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。 while语句,当条件为真时,循环运行语句块。 except, finally, else配合使用处理在程序运行中出现的异常情况。 class语句。用于定义类型。 def语句。用于定义函数和类型的方法。 pass语句。

    25110编辑于 2024-01-18
  • 来自专栏WD学习记录

    Python数据结构算法笔记(4

    map抽象数据类型定于如下,该结构是键值之间的关联的无序集合。map中的键都是唯一的,因此键和值之间存在一对一的关系。 选择排序冒泡排序有相同数量的比较,也是O(n^2),但是由于交换数量的减少,选择排序通常在基准研究中执行更快。 归并排序 使用分而治之策略作为提高排序算法性能的一种方法。归并排序是一种递归算法,不断将列表拆分为一般。如果列表为空或有一个项,则按定义进行排序。 冒泡排序,选择排序和插入排序是 O(n^2 )算法。 shell排序通过排序增量子列表来改进插入排序。它落在 O(n) 和 O(n^2 ) 之间。

    2.2K10发布于 2018-09-03
  • 来自专栏WD学习记录

    Python数据结构算法笔记(4

    problem-solving-with-algorithms-and-data-structure-using-python 中文版 6 树和树的算法 树的属性: 分层 一个节点的子节点独立于另一个节点的子节点 实现优先级队列的经典方法是使用称为二叉堆的数据结构。二叉堆允许将我们在O(logn)中排队和取出队列。 二叉堆有两个常见的变体,最小堆(最小的键总在最前面)和最大堆(最大的键总在最前面)。

    66020发布于 2018-09-03
  • 来自专栏cmazxiaoma的架构师之路

    Java数据结构算法(4) -冒泡排序

    不过还是要给自己制定一个计划,每天学习一小节《Java数据结构算法》和看一小节刘宇波老师的《数据结构算法》视频,还有就是学习Spring Boot项目课程。 ---- 从简单的冒泡排序开始 冒泡排序算法运行起来十分慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法在开始研究排序技术时是一个非常好的算法。 ---- 什么是冒泡排序? 算法思想是每次比较2个相邻的数字,将小的放在前面,将较大的放在后面,这样就可以将这些数中最大的找出来放在到最后。 提炼思想 在算法执行的时候,最大的数据项总是冒泡到数据的顶端。 public class BubbleSortDemo { public static int[] a = { 2, 4, 6, 8, 3, 6, 9, 12 }; public static

    75650发布于 2018-06-05
  • 来自专栏yiyun 的专栏

    LeetCode | 数据结构算法 | 4月 合集

    你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 示例 1 : 输入:nums = [2,2,1] 输出:1 示例 2 : 输入:nums = [4,1,2,1,2] 输出:4 示例 3 : 输入:nums = [1] 输出:1 提示: 1 <= nums.length <= 3 * 104 -3 * 104 <= nums[i] <= 3 * 104 除了某个元素只出现一次以外,其余每个元素均出现两次

    32320编辑于 2023-05-18
  • 来自专栏CodeGuide | 程序员编码指南

    《Java 数据结构算法》第4章:栈

    ❞ 一、前言 二、堆栈数据结构 三、实现堆栈结构 1. ArrayDeque 介绍 2. 添加元素 3. 扩容空间 4. 二、堆栈数据结构 在计算机科学中,堆栈是一种抽象数据类型,用作元素的集合,具有两个主要的操作; PUSH:将元素添加到集合 POP:删除最近添加但尚未删除的元素 堆栈是一种 LIFO(后进先出)的线性的数据结构 ArrayDeque 介绍 ArrayDeque 是一个基于数组实现的堆栈数据结构,在数据存放时元素通过二进制运算获取对应的索引存放元素。 堆栈的数据结构是以2的次幂进行初始化,扩容时候为2的倍数。它之所这样是因为保证了在后续计算元素索引位置时,可以进行运算。 也就说 2的n次幂-1 得到的值是一个011111的范围,在元素索引位置计算时候,找到两个值之间1的位置即可。 数据的压栈,压榨是一个在数组中倒放的方式,通过运算得到索引值。

    70220编辑于 2022-12-13
  • 来自专栏五分钟学算法

    数据结构算法——2-3-4

    本篇文章将在 2-3 树的基础上更进一步,介绍比 2-3 树更为复杂的数据结构 2-3-4树 。 之所以介绍 2-3-4 树是因为 2-3-4极为重要的红黑树有着等价关系,通过先学习2-3-4 树为后面学习红黑树打下基础,增进对于红黑树的理解。 (2)当前节点的父节点是 2-节点,兄弟节点也为 2- 节点,则此时将父节点兄弟节点合并,将合并后的节点看成当前节点,然后重复的判断,即判断合并后的当前节点的兄弟节点父节点的情况,然后走对应的(1) (3)-b:若当前节点的相邻兄弟节点为 3 个 key ,则父节点的一个 key 下移成 1 个 key 的节点,相邻兄弟节点的一个 key 上移父节点合并,此时树满足 2-3-4 树,完成调整。 今日问题: 请说出 2-3-4 2-3 树的一个区别。 打卡格式: 打卡 X 天,答:xxx 。

    1.5K20发布于 2019-09-03
  • 来自专栏学习/读书笔记

    《学习JavaScript数据结构算法》-- 4.集合(笔记)

    4.1 集合 集合是一种不允许值重复的顺序数据结构,是由一组无序且唯一的项组成的。 )); 详细代码: https://github.com/chenxiaohuan117/learning-javasrcipt-note/tree/main/%E3%80%8A%E5%AD%A6%E4% B9%A0JavaScript%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E3%80%8B(%E7%AC%AC3%E7%

    42620编辑于 2022-04-07
  • 来自专栏运维开发王义杰

    数据结构算法:排序算法

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

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

    数据结构算法算法简介

    也就是说,在一定条件下,算法只能有一条执行路径,同样的输入只能有唯一的输出结果。 4. 可行性 指算法的每一步都必须是可行的,也就是说每一步都可以通过执行一定的次数来完成。 4. 高时间效率 对于同一个问题,虽然有不同解决的算法,但是算法也有好有坏。时间效率指的是算法的执行时间,执行时间越长,效率也低,执行时间越短,效率越高。 利用上述推到原则和分析的方法,可以知道下面代码中循环次数最多的是 4,5 行,总的执行时间是 ,抛去系数后,得到最终时间复杂度 . int sum(int[] arr){ int total ,表示算法的存储空间数据规模间的增长关系,用 来代替; 常用空间复杂度 算法执行所需临时空间不随某一变量 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 i 不相等 i 找到 >= 基准点元素后,不应自增 最后基准点 i 交换,i 即为基准点最终索引 例: i 和 j 都从左边出发向右查找,i 找到比基准点4大的5,j找到比基准点小的2,停下来交换 i

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

    算法数据结构

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

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

    数据结构算法:递归算法

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

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

    数据结构算法-

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

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

    数据结构算法

    算法思路Dijkstra算法相同,不过直接对邻接矩阵进行操作,得出所有顶点间的路径,时间复杂度为O(n^3)。 1、算法实现 分别用Low、High、Mid表示待查找区间的下界、上界中间查找位置。 (递归函数)最坏是n^2 快速排序的一次划分算法从两头交替搜索,直到low和high重合,因此其时间复杂度是O(n);而整个快速排序算法的时间复杂度划分的趟数有关。 算法分析 问题分析:准确、完整地理解和描述问题 数学模型建立 算法设计选择:创造性的活动 算法表示:思想的表示形式 算法分析:算法时空特性分析 算法实现 程序调试:测试 结果整理文档编制 一、算法基本技巧 =4) == 3 二、算法设计方法 1、分治/递归 对于一个规模为n的问题P(n),可以把它分解为k个规模较小的子问题,这些子问题互相独立,且结构原来问题的结构相同。

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

    数据结构算法

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

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

    算法数据结构

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

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

    数据结构算法】初识算法

    时间复杂度 下面的查找算法也能得出之前二分查找一样的结果,那你能说出它差在哪里吗? 那么 总执行时间是 (1+4+1+4+4+1)*t = 15t 可以推导出更一般地公式为, T = (3*n+3)t 如果套用二分查找算法,还是 [1,2,3,4] 查找 5 public static _2(n)) + 1) * 5 + 4 为了对 f(n) 进行化简,应当抓住主要矛盾,找到一个变化趋势之相近的表示法 大 O 表示法[^4] 其中 c, c_1, c_2 都为一个常数 绿色 O(log(n)) ,对数时间 蓝色 O(n) ,线性时间,算法时间数据规模成正比 橙色 O(n*log(n)) ,拟线性时间 红色 O(n^2) 平方时间 黑色朝上 O(2^n) a_5 = 7 求最近邻居: 前任和后任距离更近者 习题 1) 时间复杂度估算 用函数 f(n) 表示算法效率数据规模的关系,假设每次解决问题需要 1 微秒( 10^{-6} 秒),进行估算:

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

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

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

    60240编辑于 2023-10-09
领券