240 次浏览
此程序使用关联列表表示图,该算法的时间复杂度为 O(e)。算法开始 获取顶点‘v’和边‘e’的数量的输入,以及给定图中‘e’对顶点的输入,存储在e[][]中。对于每条边,打印参与该连接的相应顶点。结束示例代码#include using namespace std; int main() { int i, v, e, j, c; coutv; coute; int edge[e][2]; for(i = 0; i < e; i++) { cout
223 次浏览
这是一个 C++ 程序,用于表示给定度序列的无向图。该算法的时间复杂度为 O(v*v),并且不包含自环和重边。算法开始 创建图, 创建第一个循环以连接每个顶点‘i’。 创建第二个嵌套循环以将顶点‘i’连接到其旁边的每个有效顶点‘j’。 如果顶点‘i’和‘j’的度数都大于零,则将它们连接起来。 使用 PrintMatrix() 打印邻接矩阵。结束示例代码#include #include using namespace std; void PrintMatrix(int matrix[][20], int n) { ... 阅读更多
490 次浏览
在此程序中,我们为给定的边‘e’生成一个随机有向无环图。此程序的时间复杂度为 O(e*v*e)。算法开始 函数 GenerateRandomGraphs(),以‘e’作为参数列表中的边数。 生成两个随机数之间的连接,例如一个小案例,将顶点数限制为 20。 使用 CheckAcyclic() 检查图中是否存在环, 如果返回 false,则丢弃此边。 否则,在图中保留此边。 打印每个顶点的所有有向连接。 如果每个的入度+出度 ... 阅读更多
820 次浏览
在此 C++ 程序中,我们使用二分搜索方法查找数组中的一个峰值。此算法返回找到的第一个峰值作为结果,算法的时间复杂度为 O(log(n))。算法开始 PeakElement() 函数以‘arr’(数据数组)、起始索引和结束索引作为参数列表。 分配数组子部分的中点。 如果 mid 位于边界索引处,并且 mid 处的值高于其邻居,则返回 mid 作为峰值。 如果 mid 处的值大于其两个邻居 ... 阅读更多
196 次浏览
这是一个使用线性搜索方法查找数组最小元素的 C++ 程序。此程序的时间复杂度为 O(log(n))。算法开始 为给定的无序数据数组构建二叉搜索树。要找到最小元素,将指针移动到最左边的子节点。打印此值作为给定数据中的最小值。结束示例代码#include using namespace std; struct node { int d; node *left; node *right; }; node* CreateNode(int d) { node *newnode = new node; newnode->d = d; ... 阅读更多
407 次浏览
这是一个使用二叉搜索树查找数组最大元素的 C++ 程序。此程序的时间复杂度为 O(log(n))。算法开始 使用给定的数据元素构建二叉搜索树。接下来遍历根指针到可用的最右子节点。打印节点的数据部分作为给定数据集中的最大数据元素。打印最大数据的深度。结束示例代码#include using namespace std; struct node { int d; node *left; node *right; }; ... 阅读更多
809 次浏览
这是一个使用线性搜索方法查找数组最小元素的 C++ 程序。此程序的时间复杂度为 O(n)。算法开始 将数据元素分配给数组。将索引‘0’处的值分配给最小变量。依次将最小值与其他数据元素进行比较。如果最小值大于数组中该特定索引处的值,则交换值。打印最小值。结束示例代码#include using namespace std; int main() { int n, i, minimum, a[10] = {1, 6, 7, 10, 12, 14, 12, 16, 20, 26}; char ch; minimum = a[0]; cout
281 次浏览
在统一二分搜索中,我们使用查找表实现二分搜索。这是一个二分搜索的改进,因为表查找比移位和加法更快。此方法的时间复杂度为 O(log(n))。算法开始 以排序的方式将数据分配给数组。 计算查找数组的最大长度并声明一个新数组‘del’。 将值分配给查找数组,如 n/2、n/4,依此类推,直到‘0’,其中 n 是数据数组的长度。 调用 UniBinarySearch() 函数。 将 mid 分配给 ... 阅读更多
443 次浏览
在此 C++ 程序中,我们使用斐波那契数实现了一种分治法。使用斐波那契数,我们计算数据数组的中点以搜索数据项。此方法的时间复杂度为 O(log(n))。算法开始 以排序的方式将数据分配给数组。 获取要搜索的元素的输入。 调用 FibonacciSearch() 函数。 使用表达式‘start+fib[index-2]’计算中间值。 如果所选项目等于中间索引处的值,则打印结果并返回到主程序。 如果它小于中间索引处的值,则继续 ... 阅读更多
235 次浏览
在此程序中,我们需要从序列中提取第 K 大元素。可以通过使用最大堆来解决问题来提高此技术的时