无序矩阵搜索算法
unsorted matrix search algorithm
是否存在一种合适的算法,允许程序在无序矩阵中搜索其中最大的素数。矩阵的大小为m*n,可以填充其他素数和非素数。搜索必须找到最大的素数。
我已经学习了分治算法,二叉树和逐步搜索,但所有这些都处理排序矩阵。
首先,无论你是使用m * n矩阵还是m * n元素的向量都没关系。一般来说,您必须访问每个矩阵元素至少一次,因为它没有排序。有一些提示可以使过程更快。
-
如果它是一个大矩阵,你应该一行一行地访问元素(而不是一列一列),因为矩阵是以这种方式存储在内存中的,所以来自同一行的元素很可能在缓存中,一旦你访问其中一个
-
测试数的素数是你任务中最昂贵的部分,所以如果矩阵中的数不是太大,你可以使用Eratosthenes的筛选算法来提前查找素数。https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
-
如果你不使用埃拉托色尼的筛,也许在算法之前对你的数字进行排序是有益的,这样你就可以从最大到最小地测试数字。在这种情况下,一旦找到第一个素数,算法就会停止。如果你不排序,你将不得不测试所有数字,这可能是最慢的方法。
你可以这样做:
for (int i = 0; i < m; m++)
{
for (int j = 0; j < n; j++)
{
if ((array[i][j] == *a prime number*)
&& (array[i][j] > biggestPrime))
{
biggestPrime = array[i][j];
}
}
}
相关文章:
- std::unordered_map 搜索算法是如何实现的?
- C++线性搜索算法,确定数组中元素的数量
- 对于具有引用返回类型的搜索算法,默认返回值应该是什么?
- 使用迭代深度优先搜索算法的未加权图的最短路径
- 尝试实现二叉搜索算法,似乎无法使其工作
- 图上的深度优先搜索算法中的内存泄漏
- 使用图形的字符串搜索算法?C++
- 使用 while 循环和搜索算法进行复制
- C++ 循环和搜索算法,重复
- 了解一种神秘地起作用的递归二进制搜索算法
- 双二叉搜索算法
- 修改广度优先搜索算法以记住矩阵中的最短路径
- C 搜索算法第一个数字= n
- 如何在较高和较低数字的阵列中适应搜索算法(3N / 2)-2
- 需要矩阵搜索算法
- C++搜索算法-处理海量数据
- 从给定的 IPv6:端口列表中搜索 IPv6:端口组合的最快搜索算法是什么 O(1) 时间一致性
- 在两个方向上寻找搜索算法 - c / c ++ / awk
- 质数搜索算法(两种不同的算法)和Prime表的使用
- 无序矩阵搜索算法