• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++求逆序对的方法

C++求逆序对的方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++逆序输出,java数组逆序方法,树状数组求逆序对,归并排序求逆序对,求逆序对等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了C++求逆序对的方法,分享给大家供大家参考之用。具体实现方法如下:

#include <iostream>
#include <vector>

using namespace std;

int array[] = {3, 9, 7, 4, 5, 2};
const int size = sizeof array / sizeof *array;
int temp[size];
//int numbers[size];

int reversePair(int *numbers, int start, int last, int &index, int &count)
{
 if(start == last)
 return 0;
 int mid = (last - start) / 2 + start;
 reversePair(numbers, start, mid, index, count);
 reversePair(numbers, mid + 1, last, index, count);

 for(int i = start; i <= last; i++)
 temp[i] = numbers[i];
 int index1 = start, index2 = mid + 1;
 index = start;
 while(index1 <= mid && index2 <= last) {
 if(temp[index1] > temp[index2]) {
  numbers[index] = temp[index2];
  count += mid - index1 + 1;
  index++;
  index2++;
 } else if(temp[index1] == temp[index2]) {
  numbers[index] = temp[index1];
  index++;
  index1++;
  index2++;
 } else if(temp[index1] < temp[index2]) {
  numbers[index] = temp[index1];
  index++;
  index1++;
 }
 }

 if(index1 <= mid) {
 while(index1 <= mid) {
  numbers[index] = temp[index1];
  index++;
  index1++;
 }
 } else {
 while(index2 <= last) {
  numbers[index] = temp[index2];
  index++;
  index2++;
 }
 }
 return count;
}

void main()
{
 int count = 0;
 int index = 0;
 reversePair(array, 0, size - 1, index, count);

 cout << "count = " << count << endl;
}

</div>

希望本文所述对大家C++算法设计的学习有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++使用递归函数和栈操作逆序一个栈的算法示例
  • C++求逆序对的方法
  • C++输入一个字符串,把其中的字符按照逆序输出的两种方法解析

相关文章

  • 2017-05-28C语言编程中统计输入的行数以及单词个数的方法
  • 2017-05-28bloom filter概念讲解以及代码分析
  • 2017-05-28c++中容器之总结篇
  • 2017-05-28c++连接mysql数据库的两种方法(ADO连接和mysql api连接)
  • 2017-05-28MFC对话框自定义消息映射的方法
  • 2017-05-28C语言中const和C++中的const 区别详解
  • 2017-05-28C++数据结构与算法之判断一个链表是否为回文结构的方法
  • 2017-05-28C语言中strspn()函数和strcspn()函数的对比使用
  • 2017-05-28C 语言中实现环形缓冲区
  • 2017-05-28基于C++中常见内存错误的总结

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 图像旋转(1.8编程基础之多维数组)
    • c++隐式类型转换示例分享
    • C++ 11实现检查是否存在特定的成员函数
    • C++ 单链表的基本操作(详解)
    • C/C++仿华容道小游戏
    • C++类基本语法实例分析
    • 在C++程序中开启和禁用Windows设备的无线网卡的方法
    • C语言实现静态链表的方法
    • C语言 实现遍历一个文件夹的所有文件
    • C++高级程序员成长之路

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有