POJ 1804 逆序数 解题(归并排序)

文章目录

    • 解法1:直接双重循环求解,n*n复杂度
    • 解法2:采用归并排序求解,复杂度nlgn

题目链接 http://poj.org/problem?id=1804
题目大意:
让一串无序数,在只能相邻数字交换的前提下,最短的次数变成有序,求该最短次数。
该最短次数=该序列的逆序数

解法1:直接双重循环求解,n*n复杂度

在这里插入图片描述

#include<iostream>
#include<cstring>
using namespace std;
int main()
{const int N = 1001;int cyctime,len,len1,sum=0;int arr[N];int i=0,j=0,k=0,temp;memset(arr,0,sizeof(int)*N);cin >> cyctime;for(i = 0; i < cyctime; ++i){//cin.clear();cin >> len;len1=len;j=0;while(len1--)	//先输入数组{cin >> temp;arr[j++] = temp;}for(j = 0; j < len; ++j)	//从前往后依次比较{for(k = j+1; k < len; ++k){if(arr[j]>arr[k]){sum++;}}}cout << "Scenario #" << i+1 << ":" << endl;cout << sum << endl << endl;sum = 0;}return 0;
}

解法2:采用归并排序求解,复杂度nlgn

在这里插入图片描述

#include<iostream>
#include<cstring>
using namespace std;
int sum=0;
void merge(int *arr,size_t left,size_t mid,size_t right)
{int len = right - left + 1;int *temp = new int [len];  //数组较长时请用new,不然栈空间容易溢出size_t index = 0;size_t i = left, j = mid + 1;while(i <= mid && j <= right){if(arr[i]<=arr[j]){temp[index++] = arr[i++];}else{temp[index++] = arr[j++];sum += mid - i + 1;       //左边数比右边大,那么左边剩余的也比其大!!!!!!!!!!}//对两边的数组从小到大放入临时空间}while(i <= mid)     //比较完后,左半边有没放进去的,直接写入{temp[index++]= arr[i++];}while(j <= right)   //比较完后,右半边有没有放进去的,直接写入{temp[index++]= arr[j++];}for(int k = 0;k< len;++k){arr[left++ ]= temp[k];  //把有序的临时数组写入原来数组的起始位置}delete [] temp;  //释放空间temp = NULL;  //指针置空
}
void divide(int *arr,size_t left,size_t right)
{if(left == right){   return;}size_t mid = (left+right)/2;  //找出区间中部的数,将数组分段divide(arr,left,mid);  //递归调用,对左边继续分段;divide(arr,mid+1,right);  //递归调用,对右边继续分段;merge(arr,left,mid,right); //对左右两半进行排序合并成一小段有序的数组
}
void mergesort(size_t dsize, int *arr)
{if(dsize <= 1)  //预防特殊情况下后面代码失效{return;}size_t left = 0, right = dsize-1;divide(arr,left,right);
}int main()
{const int N = 1001;int cyctime,len,len1;int arr[N];int i=0,j=0,temp;memset(arr,0,sizeof(int)*N);cin >> cyctime;for(i = 0; i < cyctime; ++i){//cin.clear();cin >> len;len1=len;j=0;while(len1--)	//先输入数组{cin >> temp;arr[j++] = temp;}mergesort(len,arr);cout << "Scenario #" << i+1 << ":" << endl;cout << sum << endl << endl;sum = 0;}return 0;
}

由上可看出归并排序求解时间效率更高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

史上最全memcached面试26题和答案

Memcached是什么&#xff0c;有什么作用&#xff1f; Memcached是一个开源的&#xff0c;高性能的内存绶存软件&#xff0c;从名称上看Mem就是内存的意思&#xff0c;而Cache就是缓存的意思。Memcached的作用&#xff1a;通过在事先规划好的内存空间中临时绶存数据库中的各类数…

深度学习笔记(六):Encoder-Decoder模型和Attention模型

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/u014595019/article/details/52826423 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_h…

会议 | 2018年全国知识图谱与语义计算大会(CCKS 2018)

2018年全国知识图谱与语义计算大会China Conference on Knowledge Graph and Semantic Computing (CCKS 2018)2018年8月14日-17日&#xff0c;天津征稿截止: 2018年5月18日全国知识图谱与语义计算大会&#xff08;CCKS: China Conference on Knowledge Graph and Semantic Comp…

C++ Primer 第11章 泛型算法 学习总结

文章目录11.2 算法11.2.1 只读算法**1.find函数****2.accumulate函数****3.find_first_of 函数**11.2.2 写容器元素算法1.fill函数2.fill_n函数3.back_inserter插入迭代器4.copy函数5.算法的 _copy 版本11.2.3 排序算法sort&#xff08;起始&#xff0c;结束&#xff09;&#…

到底什么是生成式对抗网络GAN?

时间&#xff1a;2017-05-11 男&#xff1a;哎&#xff0c;你看我给你拍的好不好&#xff1f; 女&#xff1a;这是什么鬼&#xff0c;你不能学学XXX的构图吗&#xff1f; 男&#xff1a;哦 …… 男&#xff1a;这次你看我拍的行不行&#xff1f; 女&#xff1a;你看看你的…

分布式缓存Redis+Memcached经典面试题和答案

Redis相比memcached有哪些优势&#xff1f; &#xff08;1&#xff09; memcached所有的值均是简单的字符串&#xff0c;redis作为其替代者&#xff0c;支持更为丰富的数据类型 &#xff08;2&#xff09; redis的速度比memcached快很多 &#xff08;3&#xff09; redis可以…

卖萌屋福利场:《机器阅读理解》免费送送送!

一只小狐狸带你解锁 炼丹术&NLP 秘籍在送书之前&#xff0c;先来了解一下机器阅读理解是什么&#xff5e;已经很熟悉的小伙伴可以快速下拉进入福利场~机器阅读理解是什么机器阅读理解&#xff08;Machine Reading Comprehension&#xff0c;MRC&#xff09;是一种利用算法使…

CCKS 2018 | 工业界论坛报告简介

China Conference on Knowledge Graph and Semantic Computing 天津&#xff0c;2018年8月14日-8月17日主题1&#xff1a;智能交互中的知识图谱时间&#xff1a;2018.08.17 &#xff08;14:00-15:00&#xff09;地点&#xff1a;天津滨海一号大会场报告1&#xff1a;报告题目&a…

BAT Java面试笔试33题:JavaList、Java Map等经典面试题!答案汇总!

JavaList面试题汇总 1、List集合&#xff1a;ArrayList、LinkedList、Vector等。 2、Vector是List接口下线程安全的集合。 3、List是有序的。 4、ArrayList和LinkedList数据结构不一样&#xff0c;前者用在查询较多的场合&#xff0c;后者适用于插入较多的场合。 5、ArrayL…

基于在线百科知识库的多义词词义消歧项目

WordMultiSenseDisambiguation WordMultiSenseDisambiguation, chinese multi-wordsense disambiguation based on online bake knowledge base and semantic embedding similarity compute,基于百科知识库的中文词语多义项获取与特定句子词语语义消歧. 项目地址:https://gith…

文本查询TextQuery类文件编写

读取用户指定的任意文本文件&#xff0c;然后允许用户从该文件中查找单词。查询的结果是该单词出现的次数&#xff0c;并列出每次出现所在的行。如果某单词在同一行中多次出现&#xff0c;程序将只显示该行一次。行号按升序显示&#xff0c;即第 7 行应该在第 9 行之前输出&…

什么是小样本学习?这篇综述文章用166篇参考文献告诉你答案

一只小狐狸带你解锁 炼丹术&NLP 秘籍来源&#xff1a;机器之心什么是小样本学习&#xff1f;它与弱监督学习等问题有何差异&#xff1f;其核心问题是什么&#xff1f;来自港科大和第四范式的这篇综述论文提供了解答。数据是机器学习领域的重要资源&#xff0c;在数据缺少的…

CCKS 2018 | 前沿技术讲习班

时间&#xff1a;8月14日-15日地点&#xff1a;南开大学泰达学院大报告厅日程安排时间主题特邀讲者8月14日上午&#xff08;8:30 – 10:00&#xff09;Deep Knowledge Graph Reasoning&#xff08;10:30-12:00&#xff09;Exploiting and Reasoning With Open Knowledge GraphW…

Java必考题目之JVM面试题目和答案

JVM内存模型 首先我们来了解一下JVM的内存模型的怎么样的&#xff1a; 1.堆&#xff1a;存放对象实例&#xff0c;几乎所有的对象实例都在这里分配内存 堆得内存由-Xms指定&#xff0c;默认是物理内存的1/64&#xff1b;最大的内存由-Xmx指定&#xff0c;默认是物理内存的1/4…

听说读论文也有trick?这篇文章告诉你深度学习论文阅读最佳姿势

2020年的今天&#xff0c;我们的专业是deep learning&#xff0c;但是我们要keep learning&#xff0c;每天早上一睁眼&#xff0c;arxiv每天更新上百篇的论文&#xff0c;著名微博博主爱可可-爱生活保持也在推送最新的deep learning资讯和论文。我们不缺少计算机视觉论文&…

屏幕Screen类文件编写

注意&#xff1a; inline 定义的函数必须放在 .h 文件中&#xff0c;否则编译器报错&#xff01; 其次&#xff0c;注意写全称在 .h 里&#xff0c;如 std:: screen.h 头文件 #ifndef SCREEN_H #define SCREEN_H #include<string> #include<iostream>class Scre…

机器翻译自动评估-BLEU算法详解

机器翻译自动评估-BLEU算法详解 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/qq_31584157/article/details/77709454 </div><link rel"stylesheet" href"https://csdnimg.cn/re…

论文浅尝 | 利用Lattice LSTM的最优中文命名实体识别方法

本文转载自公众号&#xff1a;机器之心。选自arXiv作者&#xff1a;Yue Zhang、Jie Yang机器之心编译参与&#xff1a;路、王淑婷近日&#xff0c;来自新加坡科技设计大学的研究者在 arXiv 上发布了一篇论文&#xff0c;介绍了一种新型中文命名实体识别方法&#xff0c;该方法利…

最全MySQL面试60题和答案

Mysql中有哪几种锁&#xff1f; 1.表级锁&#xff1a;开销小&#xff0c;加锁快&#xff1b;不会出现死锁&#xff1b;锁定粒度大&#xff0c;发生锁冲突的概率最高&#xff0c;并发度最低。 2.行级锁&#xff1a;开销大&#xff0c;加锁慢&#xff1b;会出现死锁&#xff1b;…

中文幽默语料库构建与计算项目(幽默等级识别,幽默类型识别,隐喻类型识别,隐喻情绪识别)

ChineseHumorSentiment chinese Humor Detection or Computation based on corpus and nlp methods, 基于语料库与NLP方法的中文幽默计算与检测项目 项目地址:https://github.com/liuhuanyong/ChineseHumorSentiment 项目介绍 幽默多指令人发笑的品质或者具有发笑的能力&…