weixin_42501429 2012-08-30 09:17
浏览 307
已采纳

一个临界点的问题

假设有一组值(大于等于0的数),总量级别:百万以上,需要求出总和在某个值(Y)的位置。实际情况中Y的值一般也是上万的。
比如:有 5,2,0,3,4,6,7,1,11,3 等求在Y=12的位置,
分析如下:
值: 5,2,0,3, 4, 6, 7, 1,11,3
累计:5,7,7,10,14,20,27,28,39,41
此时临界点在第4个数【3】那。如果是10的话,位置也是第4个数。
数据在数据库中,实际处理不考虑数据的排序问题,只需要从总量中找到一片数据总量接近或等于Y。

请教有何算法可以快速定位到临界点的位置.

已知道的算法,
1,逐条累计,可能需要较长时间
2,先按大到小排序,逐块累计,比上面快些。(操作是允许排序的)
3,类似2分的算法,直接对半,累加前半数据比较,大的话再减少一半,小的话加上剩余的一半。无限2分,直至累计值与Y的接近或等于。

这个算累计 我是在数据库ORACLE中做的。

  • 写回答

4条回答 默认 最新

  • jinnianshilongnian 2012-08-30 12:54
    关注

    1、原始表:
    t_bill;字段:索引ID(number),分钟值talktime(varchar(40));
    2、递归累加生成表:
    t_bill_2 ;字段:索引ID(number),分钟值talktime(varchar(40));

    递归累加生成表 talktime建立索引

    两个表的id一样;

    3、可以考虑根据递归累加生成表的talktime分表; 比如1--1000的在1表,依次类推;

    4、根据根据Y值查分表编号,然后查

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端