999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

大型數據表格取整算法研究

2018-07-25 06:13:36劉杰
電腦與電信 2018年5期

劉杰

1 引言

通信工程的設計由說明、圖紙和預算共三部分組成,其中預算要求每個站點做一個,預算金額保留兩位小數,并提供預算匯總表。預算匯總表樣式如表1所示,其中灰色填充部分為小計項和合計項(下稱“和項”),無顏色填充部分為單項材料金額(下稱“細項”)。

表1 預算匯總表樣式

在某些情況下,預算匯總表的金額是不能帶小數點的(例如工程預算的批復),因此需要對預算表格進行取整。取整的要求為:所有數據必須為整數,數據取整前后差額的絕對值小于1,數據行列相加等式必須成立。

當材料的類別大于10(M>10)、材料項大于100、站點數量大于100(N>10)時,這將是一個非常龐大的數據表格。除了通信工程設計的預算匯總表外,其他領域也有類似的數據表格需要取整,因此本文研究的內容為大型數據表格的取整算法,以上述表格為例作為研究對象。

2 四舍五入會增加算法復雜度

對小數取整有三種方式:四舍五入、向上取整和向下取整。但是在算法上如果采用四舍五入方式的話,將會增加算法的復雜度,如表2所示。

表2 四舍五入取整例子原數據

對表格中的數據四舍五入取整后,需要對部分數據進行加1操作,需要對部分數據進行減1操作,以使得最終的結果滿足取整的要求,如表3所示。

表3 四舍五入取整例子結果

在上述的例子中,數據四舍五入取整后,由于數據小數點后的數值有大有小,導致取整后數據的調整方向有兩個,某些數據需要向上加1,某些數據需要向下減1。數據調整方向越多,在算法實現上就會越復雜。如果對數據向上取整或向下取整,取整后數據的調整方向只有一個,向下減1或向上加1,程序實現上較為簡單。

為了使算法更為簡潔,本文選擇向下取整的方式。筆者已經在Excel通過VBA編程實現了取整算法,下面對此算法進行詳細的闡述。

3 取整算法

面對龐大且層級較多的數據表格時,為了更方便處理數據,需要對表格進行分析,取得其基本組成單元。通過分析,所有的數據表格均可分為兩個基本單元:一維數組和兩維數組,下面對這兩個基本單元的概念及取整算法說明。

3.1 一維數組表格取整算法

一維數組表格指的是在取整計算時,只需要考慮一個維度(行或列)的等式是否成立即可。具體步驟為:

(1)對數據進行向下取整;

(2)判斷和項、細項相加得到的和之間的差額,差額表格需要對細項進行調整的次數或項數;

(3)計算每一個細項取整前后的差額,把差額最大的細項加1。直到第2步計算得的差額為0,即完成了一維數組的取整。

3.2 兩維數組表格取整算法

兩維數組表格指的是在取整時,需要考慮兩個維度(行和列)的等式是否成立,下面以一個兩維數組進行詳細說明,如表4所示。

表4 兩維數組表格取整算法例子原數據

具體步驟為:

(1)對數據進行向下取整;

(2)判斷行、列和項與取整后細項和的差額,求得列差額分別為5-(1+1+1)=2、4-(1+1+1)=1、5-(1+1+1)=2,求得行差額分別為5-(1+1+1)=2、4-(1+1+1)=1、5-(1+1+1)=2,列差額與行差額組成了一個表格的行合計和列合計。使用由上而下、由左而右的方式遍歷所有單元格,如其對應的列差額、行差額均大于1,且細項原數據小數點后有數值,即對該單元格進行加1操作,最終得到結果如表5。

表5 兩維數組表格行列差額分配表

(3)完成第2步后,很多時候會存在行列等式不成立的情況,需要對這個表格進一步調整。使用由上而下、由左而右對每一列未加1操作的單元格進行遍歷,判斷細項原數據小數點后是否有數值,如是即進行加1操作。再判斷同一列在第二步已經進行加1操作的單元格,其所在行與不相等列相交的單元格是否已經有加1操作,且細項原數據小數點后有數值的話,加1操作進行互換,如表6所示。

表6 行列差額二次分配表

(4)根據第3步得到的加1操作表格,在數據表格相應位置對向下取整的細項進行加1即完成了兩維數組的取整計算。

4 表格分層

對于計算機程序來說,需要將龐大的數據表格進行拆分簡化,以方便程序處理。依據該表格的特性,本算法把表格拆分為四個層次的表格。

(1)第一層:提取數據表格的M列小計、列合計與N行小計、行合計相交的單元格,由這些單元格組成第一層表格,如表7所示。

表7 第一層數據表格

首先需要對工程合計數值進行四舍五入,確定數據表格的總和,見上表標圓形的單元格。然后對行合計、列合計進行取整,利用一維數組取整算法處理即可完成。完成此部分后,M列小計與N行小計組成了一個兩維數組,利用兩維數組取整算法,即可完成第一層數據表格的取整。

(2)第二層:提取數據表格的M列小計、列合計與站點行、行小計相交的單元格,由這些單元格組成第二層表格。第二層共有N個表格,大致表格如表8所示。

表8 第二層數據表格

通過第一層的調整計算,A(~N)省小計的值已經確定,列合計與站點行相交的單元格組成了一維數組,利用一維數組取整算法處理。完成此步后,M列小計與站點行相交的單元格就組成了一個兩維數組,接著利用兩維數組取整算法處理。按此步驟把第二層N個表格處理完成后,即完成了第二層的取整。

(3)第三層:提取數據表格的列小計、材料列與行小計、行合計相交的單元格,由這些單元格組成第三層表格。第二層共有M個表格,大致表格如表9所示。

表9 第三層數據表格

通過第一層的取整計算,列小計與行合計相交單元格的值已經確定,通過第二層的取整計算,列小計與行小計相交單元格的值也已經確定。材料列與行小計相交的單元格組成了一維數組,利用一維數組取整算法處理。完成此步后,材料列與行小計相交的單元格就組成了一個兩維數組,接著利用兩維數組取整算法處理。按此步驟把第三層M個表格處理完成后,即完成了第三層的取整計算。

(4)第四層:提取數據表格的列小計、材料列與行小計、站點行相交的單元格,由這些單元格組成第四層表格。第四層共有M×N個表格,大致表格如表10所示。

表10 第四層數據表格

通過第二層的取整,列小計與站點行相交單元格的值已經確定,通過第三層的取整,材料列與行小計相交單元格的值也已經確定。材料列與站點行相交的單元格組成了一個兩維數組,接著利用兩維數組取整算法處理。按此步驟把第四層M×N個表格處理完成后,即完成了第四層的取整計算。

完成以上四個層次表格的取整后,整個大型數據表格的取整工作完成。

5 結束語

本文取整算法的實現,使得大型數據表格的取整工作變得非常簡單、快捷,極大地提高了工作效率和節省了人力成本,在實際應用上具有很大的意義。

主站蜘蛛池模板: 中文字幕调教一区二区视频| 国产精品嫩草影院av| 日韩视频免费| 国产丝袜啪啪| 亚洲一区色| 精品乱码久久久久久久| 日本高清免费不卡视频| 中文字幕亚洲电影| 亚洲精品无码日韩国产不卡| 狠狠干综合| 国产凹凸视频在线观看| 精品无码视频在线观看| 国产精品国产三级国产专业不| 欧美成人一区午夜福利在线| 国产精品视频a| 97综合久久| 国产午夜看片| 国产永久无码观看在线| 亚洲人网站| 国产一区二区影院| 亚洲视频影院| 婷婷色一区二区三区| 免费一级毛片在线观看| 99热这里只有成人精品国产| 亚洲AV无码乱码在线观看代蜜桃| 依依成人精品无v国产| 波多野结衣一区二区三区四区视频 | 亚洲色图欧美| 一本大道视频精品人妻| 99久久无色码中文字幕| 天天摸夜夜操| 亚洲伊人天堂| 中文字幕av一区二区三区欲色| 蜜芽一区二区国产精品| AV天堂资源福利在线观看| 97国产在线视频| 一级高清毛片免费a级高清毛片| AV网站中文| 91精品网站| 91色综合综合热五月激情| 国产91高跟丝袜| 婷婷激情亚洲| 国产系列在线| 亚洲国产精品一区二区第一页免| 一区二区三区高清视频国产女人| 国内精品小视频在线| 国产一区二区三区日韩精品 | 日本亚洲国产一区二区三区| 国产国产人在线成免费视频狼人色| 99这里精品| 经典三级久久| 久久国产免费观看| 亚洲人成电影在线播放| 国产99视频精品免费观看9e| 成人年鲁鲁在线观看视频| 久久精品国产免费观看频道| 久热99这里只有精品视频6| 九色视频最新网址 | 国产欧美在线观看一区| 国产欧美日韩资源在线观看| 亚洲国产成人精品青青草原| 亚洲第一成年网| 波多野结衣第一页| 波多野结衣的av一区二区三区| 亚洲毛片网站| 久久无码av三级| 一本无码在线观看| 婷婷激情亚洲| 国产一区自拍视频| a级毛片毛片免费观看久潮| 精品国产自在在线在线观看| 国产H片无码不卡在线视频| 国产三级韩国三级理| 福利国产在线| 欧美 亚洲 日韩 国产| 亚洲天堂成人在线观看| 深夜福利视频一区二区| 在线播放91| 亚洲欧美日韩另类| 成人国内精品久久久久影院| 麻豆精品在线播放| 成人a免费α片在线视频网站|