`
bld
  • 浏览: 4541 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

数组与大O表示法

阅读更多

 

为了处理方便,把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组。一般一个数组中的所有元素具有相同的数据类型。

数组分有序数组和无序数组。

数组数据的插入: 直接通过下标进行插入。一般数组中包含一个当前元素个数的变量。时间复杂度O(1)

数组数据的查找:按顺序进行比较。时间复杂度O(N),有序数组可使用二分法进行查找。时间复杂度O(logN)

数组数据的删除:先查找,然后删除,再将后面的元素前移。时间复杂度O(N)


大O表示法:表示时间与数据规模(数量)之间的关系在那个的量级,大O表示法中忽略了计算时间公式中的常数,只是从随着规模增大,时间将会以那种量级进行增长来表示算法速度,所以时间计算公式中 T=24*K*N 跟 T=N 跟 T=N/56 都被表示为O(N),24*K,1,1/56都被舍弃了。大O表示法中一般的量级有:O(1),O(N),O(logN),O(N*logN),O(N*N)

 

0
0
分享到:
评论

相关推荐

    《Java数据结构和算法》学习笔记(1)——数组 二分法 大O表示法

    本文将深入探讨《Java数据结构和算法》学习笔记的第一部分,主要聚焦于数组、二分法以及大O表示法。这些基础知识对于提升代码性能和优化解决方案具有决定性的作用。 **数组**是编程中最基本的数据结构之一,它在...

    Java常用算法手册

    1.大O表示法:粗略的量度方法即算法的速度是如何与数据项的个数相关的 算法 大O表示法表示的运行时间 线性查找 O(N) 二分查找 O(logN) 无序数组的插入 O(1) 有序数组的插入 O(N) 无序数组的删除 O(N) 有序...

    数组最大值最小值_数组最大值最小值_最小值_

    在Python中,数组一般用list表示;在Java中,使用数组类如int[];而在C++中,我们使用数组声明,如int arr[20]。 要找出数组中的最大值和最小值,有几种常见的方法: 1. **遍历法**:这是最直观的方法,通过遍历...

    数组快速排序法后的统计分析

    它的基本思想是分治法(Divide and Conquer),通过选择一个基准元素,将数组分成两个子数组,使得一部分元素小于基准,另一部分元素大于基准,然后递归地对这两个子数组进行快速排序,最终实现整个数组的有序排列。...

    Java数组练习题(带答案).doc

    本资源为Java数组练习题,共计15道题,涵盖了Java数组的基础知识点,包括数组的访问、数组的复制、数组的初始化、数组的下标、数组的长度、数组的存储、数组的下标越界、数组的元素类型、数组的默认值、数组的大小、...

    数组下标法求众数 众数求解

    在求解众数的问题中,我们可以创建一个与原始数组长度相等的新数组,新数组的每个元素表示原始数组中对应位置上的元素出现的次数。例如,如果原始数组为[1, 2, 3, 1, 4, 2, 1],新数组则初始化为全零,经过遍历后...

    Java数组练习题带答案.doc

    Java 数组练习题带答案 ...13. 数组 a 的第三个元素表示为 D. a[2]。 14. 当访问无效的数组下标时,会发生 B. 抛出异常。 15. 使用 arraycopy() 方法将数组 a 复制到 b 正确的是 A. arraycopy(a,0,b,0,a.length)。

    DSAinC++8-数组与广义表1

    通常使用三元组表示法(行号、列号、非零元素值)存储非零元素,从而减少存储需求。 **广义表** 是线性表的一种扩展,它可以包含子表(列表),使得数据结构更灵活。广义表的存储结构通常采用链式存储,如使用链表...

    子数组的最大乘积(微软)

    以上两种解法均能在 \( O(N) \) 时间复杂度内解决问题,但在实际应用中,第二种解法更加高效,因为它减少了不必要的计算,特别是当数组规模较大时,这种方法的优势更为明显。此外,第二种解法还考虑到了数据溢出的...

    JAVA数组学习教程

    - 大O表示法用于描述算法的时间复杂度,它帮助我们理解算法在最坏情况下的运行速度。例如,对于线性搜索,时间复杂度是O(n),而二分查找是O(log n)。 6. **为什么不用数组表示一切** - 虽然数组简单且高效,但它...

    使用冒泡法排序法对一维数组进行排序

    在冒泡排序中,我们遍历数组的每一个元素,与它后面的元素进行比较。如果当前元素大于后面的元素,则交换它们的位置。这个过程会重复进行,直到数组完全排序。由于每次比较都可能将最大的元素放到正确的位置,所以...

    C#做的有序数组

    二分查找插入点的算法复杂度为O(log n),插入元素后数组元素移动的复杂度为O(n)。 查找元素在有序数组中可以通过二分查找法实现,其效率显著高于线性查找。基本步骤包括: 1. 设置查找范围的起始和结束索引。 2. ...

    最大子数组和

    对于最大子数组和问题,分治法首先将数组分为左右两部分,然后分别求出左半部分、右半部分以及跨越中间点的子数组的最大和,最后返回这三个值中的最大者。这种方法的时间复杂度为O(n log n),比蛮力法更高效。 ####...

    java数组冒泡法排序

    ### Java数组冒泡法排序详解 #### 一、冒泡排序基本概念 冒泡排序(Bubble Sort)是一种简单的排序算法,其基本思想是通过不断地交换相邻两个元素的位置,使得每一轮遍历后最大的元素能够“浮”到数组的末尾。这种...

    使用直接插入法对一维数组进行排序

    - **时间复杂度**:在最坏的情况下,即输入数组完全逆序,直接插入排序的时间复杂度为O(n^2),其中n是数组的长度。而在最好情况下,即数组已经有序,时间复杂度为O(n)。 - **空间复杂度**:由于排序过程中仅使用了...

    C语言编程技术实践 源程序(地址法求数组中最大值).docx

    这种方法效率较高,因为它只需要遍历数组一次,时间复杂度为O(n),其中n是数组的大小。 总结起来,这个C语言程序展示了如何使用指针和数组来实现一个简单的功能——寻找数组中的最大值。它帮助我们理解了指针在...

    算法 子数组最大乘积

    - `t[i]`表示数组`nums`中后`N-i`个元素的乘积(`1 ≤ i ≤ N`,且`t[N+1] = 1`作为边界条件)。 2. **计算过程**: - 对于`s[i]`,可以通过递推公式`s[i] = s[i-1] * nums[i-1]`计算得到。 - 对于`t[i]`,可以...

    数组—凑和 代码

    在凑和问题中,我们可以构建一个二维数组 `dp`,其中 `dp[i][j]` 表示数组的前 `i` 个元素中是否存在和为 `j` 的子集。 ```python def subset_sum_dp(arr, target): n = len(arr) dp = [[False] * (target + 1) ...

    JavaScript中的数组特性介绍.docx

    - **字面量表示法**:直接使用方括号`[]`创建数组。 - **Array构造函数**:调用`Array()`,不传参数创建空数组,或者传入一个数字作为数组长度。 - **Array构造函数与参数**:传递多个值给`Array()`构造函数,...

Global site tag (gtag.js) - Google Analytics