E81086713E446D36F62B2AA2A3502B5EB155

          Java雜家

          雜七雜八。。。一家之言

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            40 Posts :: 1 Stories :: 174 Comments :: 0 Trackbacks
          問題:
          有個鏈表(List),有N個元素,當N很大的時候,我們通常想分批處理該鏈表。假如每次處理M條(0<M<=N),那么需要處理幾次才能處理完所有數據呢?

          問題很簡單,我們需要<N/M>次,這里我們用<>表示向上取整,[]表示向下取整,那么怎么來表示這個值呢?
          我們可以證明:
          <N/M>=[(N-1)/M]+1    (0<M<=N,M,N∈Z)

          不失一般性,我們設N=Mk+r(0<=r<M),
          1)當r>0時,

          左邊:<N/M>=<(Mk+r)/M>=<k+r/M>=k+<r/M>=k+1
          右邊:[(N-1)/M]+1=[(Mk+r-1)/M]+1=[k+(r-1)/M]+1=k+1+[(r-1)/M]=k+1
          2)當r=0
          左邊:<N/M>=k
          右邊:[(N-1)/M]+1=[(Mk-1)/M]+1=[(M(k-1)+M-1)/M]+1=[k-1+(M-1)/M]+1=k+[(M-1)/M]=k

          命題得證。

          有了這個公式,我們在Java代碼里可以這樣計算:
          int nn=(N-1)/+1
          .


          因為'/'是往下取整的。








          posted on 2009-05-04 11:45 DoubleH 閱讀(3988) 評論(4)  編輯  收藏 所屬分類: Memorandum

          Feedback

          # re: 向上取整的一個應用 2009-05-04 13:17 重慶理工小子

          LZ介紹了一下數學的證明題哈,不錯不錯!
          另也可直接可以用 Math.ceil()函數向上取整哦   回復  更多評論
            

          # re: 向上取整的一個應用[未登錄] 2009-05-04 14:41 DoubleH
          Math.ceil返回double類型。。這個公式只對正整數的情況,簡單明了點  回復  更多評論
            

          # re: 向上取整的一個應用 2010-12-27 18:06 JALY
          hehe.不錯哈  回復  更多評論
            

          # re: 向上取整的一個應用 2014-08-31 12:12 上海碼農
          當N等于0的時候貌似不成立  回復  更多評論
            

          主站蜘蛛池模板: 慈利县| 武山县| 珠海市| 邢台市| 扎鲁特旗| 绥芬河市| 天台县| 镇康县| 遂昌县| 鹤壁市| 错那县| 安新县| 伊春市| 蕲春县| 兴山县| 孟州市| 芜湖市| 宁德市| 抚松县| 乐东| 苏州市| 湘潭县| 集安市| 武川县| 曲松县| 尤溪县| 衡水市| 蒙山县| 穆棱市| 岗巴县| 江源县| 弥勒县| 繁峙县| 宁陵县| 桓仁| 哈尔滨市| 分宜县| 揭西县| 张家川| 磴口县| 汪清县|