使用基于策略的数据结构进行逆序计数

使用基于策略的数据结构进行逆序计数

我们将使用 g++ 头文件在 C++ 编译器中编译代码。 g++是一个基于Linux的头文件,用于在C++中编译基于策略数据结构的代码。基于策略的数据结构是用于代码的高性能和灵活性的结构。由于这些数据结构非常丰富,我们可以将它们用于许多功能,例如搜索元素的索引、将元素插入到索引位置、从索引范围中删除元素等。

Example

的中文翻译为:

示例

让我们举一个反转计数的例子 –

假设构建树的内部遍历是1,2,3,4,5,当我们遍历以反转它时,树的形式变为5,4,3,2,1.

让我们将以下树结构作为输入

 

登录后复制

给定的结构树长度为4。现在我们将考虑以下步骤来理解反转的过程。

步骤 1 – 元素以 index[0] 开头,即 5, 并与每个元素配对,直到 index [4]1。因此索引 0 到 4 之间的总计数为 4

(5…4), (5…3), (5…2), (5…1)

登录后复制

第二步 – 元素从 index[1] 开始,即 4, 并与每个元素配对,直到 index[4]1。因此,索引 1 到 4 之间的总计数为 3。

(4…3), (4…2), (4…1)

登录后复制

步骤 3 – 元素以 index[2] 开头,即 3, 并与每个元素配对,直到 index [4] 即 1。因此索引 2 到 4 之间的总计数为 2

(3…2), (3…1)

登录后复制

第4步 – 元素从 index[3] 开始,即 2,并与每个元素配对,直到 index[4],即 1。因此,索引3到4之间的总计数为 1。

(2…1)

登录后复制

这样我们可以编写给定构造树的反转。因此,count(4+3+2+1)的总反转数为10。

在本文中,我们将使用基于策略的数据结构来解决反转计数问题。

语法

程序中使用以下语法 –

vector  vector_variable_name

登录后复制

参数

data_type – 用于向量的数据类型。

vector_variable_name − 用于向量的变量名称。

typedef tree, rb_tree_tag, tree_order_statistics_node_update> pbds;

登录后复制

参数

typedef – 这是 C++ 程序中使用的保留关键字。

int − 插入数组项的数据类型。

null_type – 这是一个映射策略并作为一个集合使用。如果我们想要映射,那么第二个参数必须是映射类型。

less – 两个函数之间的比较。

rb_tree_tag – 用于基于插入和删除的红黑树的树类型。

tree_order_statistics_node_update − 这是基于头文件‘tree_policy.hpp’的,该文件包含了用于更新节点变体的树形容器的各种操作。因此,我们将跟踪子树中的节点。

pbds – 基于策略的数据结构的变量名称。

order_of_key()

登录后复制

算法

我们将使用头文件iostreamvector启动程序。然后我们将提到基于g++的头文件基于策略的数据结构(pbds)。

我们将根据GNU的策略基于数据结构使用必要的命名空间,即‘using namespace __gnu_pbds’。它将根据pbds初始化树的格式,即‘typedef tree, rb_tree_tag, tree_order_statistics_node_update> pbds;通过使用这些,我们将跟踪子树中的节点。

我们正在定义一个双长数据类型的函数定义‘inversion_Cnt’,它接受一个向量整数的参数并存储数组元素的地址。

我们将‘0’存储到变量‘cnt’中,以便处理总对的逆序计数

然后将名为pb的对象初始化为基于策略的变量‘pbds’,以便对数组元素的插入和排序进行操作。

在初始化变量之后,使用for循环来迭代数组元素。这个数组元素将根据以下两个语句进行反转操作 –

cnt += i-pb.order_of_key(arr[i]); – 通过计算 ,、、、、 等。

pb.insert(arr[i]); – 通过使用预定义函数 insert(),我们添加数组元素的反转,即 arr[i]。

我们开始主函数,并声明向量数组 input。

然后我们使用变量‘count’调用函数‘inversion_Cnt’

最后,‘count’变量给出了数组中反转的总计数。

Example

的中文翻译为:

示例

在这个程序中,我们将使用策略性的数据结构来计算数字的逆序数。

#include #include // *******g++ header file*********#include #include using namespace std;using namespace __gnu_pbds;typedef tree, rb_tree_tag, tree_order_statistics_node_update> pbds;double long inversion_Cnt( vector& arr) {   double long cnt = 0;   pbds pb;   for(int i = 0; i  arr = {5, 4, 3, 2, 1}; // The inversion of following input array is , , , , , , , , ,    double long count = inversion_Cnt(arr);   cout

输出

Total number of inversion count using Policy based data structure is : 10

登录后复制

结论

我们通过执行基于反转计数的程序来探索 Linux 头文件 (g++) 的概念。众所周知,C++程序用于操作系统,它有一个跟踪器来记录系统的每一个信息。与此程序相同,我们看到子树如何跟踪其每个节点。

以上就是使用基于策略的数据结构进行逆序计数的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2584121.html

(0)
上一篇 2025年3月6日 14:44:14
下一篇 2025年3月6日 02:17:29

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • AA树在C/C++中是什么?

    在计算机科学中,aa树被定义为一种用于高效存储和检索有序数据的平衡树实现。aa树被视为红黑树的一种变体,红黑树是一种支持高效添加和删除条目的二叉搜索树。与红黑树不同,aa树上的红色节点只能作为右子节点添加,不能作为左子节点添加。这个操作的结…

    2025年3月6日 编程技术
    200
  • 设计一个队列数据结构,在O(1)时间内获取最小或最大值

    C++ 有一个 deque 头文件,用于处理堆栈和%ignore_a_1%的属性。在数据结构中,解决O(1)时间复杂度的问题,需要常数时间。通过在该程序中使用双端队列,我们​​获得了同时使用堆栈和队列的优势。 在本文中,我们将解决队列数据结…

    2025年3月6日
    200
  • 不相交集合数据结构或并查集算法介绍

    不相交集信息结构,也称为并查算法,可能是计算机科学中的一个基本概念,它为解决与分配和网络相关的问题提供了有效的方法。它对于解决包括组件集和确定它们的连接在内的问题特别有价值。在本文中,我们将研究语言结构、算法以及在 C++ 中执行不相交集合…

    2025年3月6日
    200
  • 如何设计高效的C++数据结构?

    作为一门广泛应用于计算机科学的科目,数据结构的设计与优化是C++编程中重要的一环。在面对复杂的数据问题时,高效的数据结构可以大大提升程序的执行效率和减轻计算压力。所以如何设计高效的C++数据结构成为了每个程序员要深入学习和研究的事情。本文将…

    2025年3月6日
    200
  • C++高级数据结构与算法解析:应对复杂问题的利器

    C++高级数据结构与算法解析:应对复杂问题的利器 随着信息技术的快速发展,人们对于数据的处理需求也越来越复杂。处理大规模数据、解决复杂问题成为了软件开发领域的重要任务。而高级数据结构与算法作为应对这些挑战的利器之一,一直备受关注。 C++作…

    2025年3月6日
    200
  • C++数据结构与算法实践:高效解决复杂问题的技巧

    C++是一种非常强大的编程语言,它不仅可以用于开发各种应用程序,还可以用于解决各种复杂的问题。数据结构和算法是C++编程中非常重要的一部分,通过合理地选择数据结构和运用适当的算法,我们可以实现高效的问题解决方案。本文将介绍一些C++数据结构…

    2025年3月6日
    200
  • C++异常处理策略:保障程序稳定性的关键

    C++是一种广泛应用于软件开发的编程语言,其强大的功能和灵活性使得很多开发者选择使用它来构建复杂的应用程序。然而,由于程序中可能会存在各种错误和异常情况,为了保障程序的稳定性,正确处理异常是至关重要的一环。本文将探讨C++异常处理的策略和技…

    2025年3月6日
    200
  • C++高级数据结构算法实践:解决复杂问题的利器

    近年来,随着计算机科学领域的不断发展,高级数据结构算法作为解决复杂问题的重要工具,受到了人们越来越多的关注。在这些高级数据结构算法中,C++语言作为一种十分流行的编程语言,其在算法实践中发挥着重要的作用。本文将介绍一些高级数据结构算法在C+…

    2025年3月6日
    200
  • C中pair用法

    C中pair用法,需要具体代码示例 在C语言中,我们经常需要在一个程序中保存两个不同类型的对象,这种情况下我们可以使用pair来实现。pair是C语言中的一个结构体类型,用于保存两个不同类型的对象。本文将介绍pair的基本用法,并提供具体的…

    2025年3月6日
    200
  • 掌握C语言后的职业发展策略

    掌握C语言后的职业发展策略 一、引言 计算机行业的快速发展使得人们对于掌握编程语言的需求越来越迫切。作为一种被广泛应用的编程语言,C语言在职业发展中占据着重要的地位。然而,仅仅掌握C语言并不足以在竞争激烈的职场上脱颖而出。本文将针对掌握C语…

    2025年3月6日
    200

发表回复

登录后才能评论