搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求逆序对个数,数据很多,开数组内存不够
标题:
求逆序对个数,数据很多,开数组内存不够
只看楼主
青蝶
等 级:
论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
结帖率:
92%
楼主
已结贴
√
问题点数:20 回复次数:1
求逆序对个数,数据很多,开数组内存不够
求逆序对个数的问题(即i<j的情况下,a[i]>a[j]的数据对个数),一般是把一组输入数据放到一个数组里,通过循环来计数。但是如果一组数据有很多(比如10^6)个,没办法开一个那么大的数组,应该用什么方法呢?
搜索更多相关主题的帖子:
逆序
个数
数据
数组
内存
2018-05-08 12:15
九转星河
来 自:长长久久
等 级:
贵宾
威 望:
52
帖 子:5023
专家分:14003
注 册:2016-10-22
第
2
楼
得分:20
内存不够可以从堆空间申请资源(简单来说就是声明一个全局变量)
栈空间是连续的,通常申请资源的时候会找连续的一块,如果没有那么大的空间则不能分配内存~
堆空间是通过链表块来链接的,是不连续的,可以从操作系统申请资源分配,是不连续的,但可以申请的资源比较多~
两个for循环可能会超时,如果有需要的可以参考
https://bbs.bccn.net/viewthread.php?tid=485375&highlight=%D7%EE%B3%A4%B5%DD%D4%F6%D7%D3%D0%F2%C1%D0
大意就是说用o(log(n))的时间复杂度构建一个树状数组,然后看树状数组当前结点的深度,所有结点深度相加即是结果(或者那些oj平台的需要用到log long 型,不然10^6*10^6/2数据范围可能会有溢出)
~
[此贴子已经被作者于2018-5-8 12:43编辑过]
[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-05-08 12:41
2
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-486763-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.954357 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved