问题标签 [array-algorithms]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 我解释这个伪代码错了吗?
我有这个伪代码:
我将其解释为:
但是那会跳过unsortedArr[0]
。这意味着它不会工作。
将第二个更改for
为:
将使其按预期运行。伪代码中有错误还是我第一次尝试解释错误?
java - 质数计算帮助 Java
我是新手,请原谅我缺乏组织。好的,我所做的是我创建了一个数组,其中包含 8 到 100 之间的所有素数。我现在要做的是创建另一个数组来查找 101-200 之间的所有素数。所以请允许我解释一下我是如何完成第一部分的:
//Prime1 是一个动态整数数组,存储了 8 到 100 之间的所有素数
现在回到主要问题,而不是写“if(primeTest % "prime#" !=0)" 我希望能够在整个 Prime1 数组中使用模数并查看所有值是否不等于零。 . 让我详细说明。
//请原谅任何缺少的大括号
^^所以这里发生的是我从 101 开始取一个值,并将它与 Prime1 数组的第一个值取模。如您所知,这可能会给我一个误报,因为即使数字不是素数,11(数组中的第一个素数)仍可能显示为真。这就是为什么我需要能够用数组中的所有值来测试一个数字,以确保它不能被任何其他素数除(意味着它是素数)。
arrays - 如何在一次迭代中找到数组中的第二个最大元素?
我需要一次迭代中未排序数组中的第二个最大元素。例如:数组是 3 9 8 2 0 -4 87 45 3 2 1 0 答案应该是 45 ,在一次迭代中找到最大元素非常简单,但是如何在同一迭代中找到第二个最大值,或者恒定时间在数组的堡垒迭代之后。
algorithm - 如何找到m个排序数组的中位数?
如何找到M个排序的整数数组的中位数?其中每个数组的大小以 N 为界。假设每个数组包含已排序的整数元素。
这个问题有两种变体。
- 每个数组具有相同的大小。
- 每个数组都有不同的大小。
java - 如何在 Java 中打破先前未指定输入大小的循环?
我需要输入 n 个数字,将它们存储在一个变量中,并使其可供以后处理。约束: 1. 连续输入之间的任意数量的空格。2. 输入的数量是未知的。3.输入集不应超过256KB,应在0<= i <=10^18之间
javascript - 运行时错误和时间复杂性问题:最小化值 |(A[0] + ... + A[P-1]) - (A[P] + ... + A[N-1])|
我最近解决了一个编码问题。我想出了解决以下问题的方法。
给出了一个由 N 个整数组成的非空零索引数组 A。数组 A 代表磁带上的数字。
任何整数 P,例如 0 < P < N,都会将此磁带分成两个非空部分:A[0]、A[1]、...、A[P - 1] 和 A[P]、A[ P + 1], ..., A[N - 1]。
两部分的差值是:|(A[0] + A[1] + ... + A[P - 1]) - (A[P] + A[P + 1] + .. . + A[N - 1])|
换句话说,它是第一部分的总和与第二部分的总和之间的绝对差。
例如,考虑数组 A,这样:
A[0] = 3
A[1] = 1
A[2] = 2
A[3] = 4
A[4] = 3
我们可以将此磁带分成四个位置:
P = 1、差值 = |3 − 10| = 7
P = 2,差值 = |4 - 9| = 5
P = 3,差值 = |6 - 7| = 1
P = 4,差值 = |10 - 3| = 7
写一个函数:function solution(A);
即,给定一个由 N 个整数组成的非空零索引数组 A,返回可以实现的最小差异。
例如,给定:
A[0] = 3
A[1] = 1
A[2] = 2
A[3] = 4
A[4] = 3
该函数应返回 1,如上所述。
假设:
N是[2..100,000]范围内的整数;
数组 A 的每个元素都是 [−1,000..1,000] 范围内的整数。
复杂度:
预期的最坏情况时间复杂度为 O(N);
预期的最坏情况空间复杂度为 O(N),超出输入存储(不计算输入参数所需的存储)。
可以修改输入数组的元素。
以下是我测试解决方案得到的反馈:
正确性:small_range 范围序列,长度 = ~1,000 1.900 s运行时
错误测试程序意外终止
性能:检测到的时间复杂度:O(N * N)
所以我在 1000 左右的范围内遇到了一个运行时错误。最重要的是,我没有得到 O(n)。当我使用嵌套的 for 循环时,我得到了 O(n * n) 。
(1) 如何修复运行时错误?
(2) 如何为同一问题构造 O(n) 算法?有什么建议么?
这是我的解决方案:
arrays - 改进快速排序以在线性时间内排序?
我们可以在线性时间内对未排序的实数数组进行排序吗?这就是我的想法:
给定一个大小为 n 的未排序数组:
- 使用选择算法找出
sqrt(n)^th
元素(称为 x):O(n) - 找出比 x 小的元素和比 x 大的元素并形成 2 个数组:O(n)
- 将两个数组分别排序: O(sqrt(n)log(sqrt(n))) = O(n) as log(n) < sqrt(n)
所以整个算法是O(n)
我知道下限是 nlog(n)。我究竟做错了什么?
java - 使用一个数组进行合并排序
我的合并排序算法如下...
我们知道这个算法需要额外的内存。有没有办法只用一个数组进行排序?(在单个数组中排序。)
我的合并排序算法是:
java - 使用java快速排序
该程序在编译时显示错误,有人可以提出问题吗?
主要类:
排序类:
例外。
也欢迎对算法提出任何建议。但是我更愿意维护程序的本质。
c++ - 编写一个算法来查找数组中出现频率最高的元素。给出算法的时间复杂度
我正在做“算法分析”的任务,我被这个问题困住了,我明天必须提交,我需要帮助。如果你能解决这个问题,请回答。
给定一个包含 n 个数字的数组 A,编写一个有效的算法来找到该数组中最常出现的元素(该数组的模式)。还要分析算法的时间复杂度。