![sashash簡介與實例_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/9157ce03-be92-4ae3-aebd-cca41c51de7c/9157ce03-be92-4ae3-aebd-cca41c51de7c1.gif)
![sashash簡介與實例_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/9157ce03-be92-4ae3-aebd-cca41c51de7c/9157ce03-be92-4ae3-aebd-cca41c51de7c2.gif)
![sashash簡介與實例_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/9157ce03-be92-4ae3-aebd-cca41c51de7c/9157ce03-be92-4ae3-aebd-cca41c51de7c3.gif)
![sashash簡介與實例_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/9157ce03-be92-4ae3-aebd-cca41c51de7c/9157ce03-be92-4ae3-aebd-cca41c51de7c4.gif)
![sashash簡介與實例_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/9157ce03-be92-4ae3-aebd-cca41c51de7c/9157ce03-be92-4ae3-aebd-cca41c51de7c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、在SAS中我們比擬習慣使用 DATA步來解決數(shù)據(jù)處理工作,但是當我們需要處理的是兩個以上有關(guān)聯(lián)的數(shù)據(jù)文件或需要處理的數(shù)據(jù)觀測記錄到達百萬級別時,DATA步顯然不能滿足我們的要求.假設(shè)使用 hash散列表(哈希表),把關(guān)鍵字映射到散列表中,通過散列表直 接獲取需要訪問數(shù)據(jù)的存儲地址,可以快速的進行查找、添加等操作.SAS提供了 hash和hiter兩種方法處理哈希表,hash提供了查找、修改、添加、刪除等 方法,hiter提供了用于定位和遍歷等方法.1.1 Hash的定義及使用在使用之前需要定義哈希表,如下:Daclare hash myhash;myhash=_new_ hash();或者:
2、Declare hash myhash();例如:Daclare hash my_hash;my_hash =_new_ hash();定義了個名字為 my_hash 的哈希表. 初始化哈希表:declare hash variable_name(argument_tag-1 : value-1<, .argument_tag-n: value-n>);或者:variable_name = _new_ hash(argument_tag-1: value-1<, .argument_tag-n: value-n>);例如:declare hash h(hashexp:
3、4,dataset: ", ordered: 'yes');定義了一個名字為 h 的哈希表, 并且把的數(shù)據(jù)映射到哈希表上;hashexp: 4表示哈希表的大小定為 2的4次方,ordered: 'yes'表示在哈希表中根據(jù)關(guān)鍵字升序排序.語句解讀:使用第一種方法定義哈希表時需要注意myhash是定義的表名,其余局部為固定格式.初始化時可選填的項有:Hashexp:n指定哈希表的大小為 2n,但并不表示觀測數(shù).默認為8.Dataset:'dataset_name'指定需要映射到哈希表的數(shù)據(jù)集.Ordered: ' option &
4、#39;指te輸出到數(shù)據(jù)集或讀取數(shù)據(jù)時是否排序,option選項如下:Ascending 和 yes fev根據(jù) keyDescending根據(jù)key值降序;no為不做任何操作.此外各選項均可只用首子 母代替.duplicate: ' option 'option選項如下:replace表7K遇至ij相同key時,僅保存最后 一條觀測;error表tk遇到相同的key時,在日志窗口報錯multidata: ' option 'option項如下:yes表不允許重復的 key在哈希表中出現(xiàn), no那么不允許,默認情況為不允許.在定義一個新的哈希表后需要指定哈希表的
5、關(guān)鍵字段等,如下:DEFINEKEYDEFINEDATADEFINEDONECALL MISSING定義關(guān)鍵字段;定義值;定義完成;防止提示變量未初始化哈希表中可以實現(xiàn)較多的操作,語句格式如下:myhash. ' option '();option可選選項句及功能:語句FINDADD CHECK REPLACE REMOVEEQUAL OUTPUTREF功能查找相同的鍵值,存在那么返回rc=0;添加鍵值,假設(shè)hash表中已存在,那么不添加;查找健值,假設(shè)存在返回 rc=0;假設(shè)哈希表中不存在指定的關(guān)健字段,那么添加;假設(shè)存在那么替換;移去哈希表中指定關(guān)鍵字對應(yīng)的地址等數(shù)據(jù);判斷
6、兩個哈希表是否完全相等;將哈希表輸出到數(shù)據(jù)集;假設(shè)查找關(guān)鍵字成功那么無操作,假設(shè)查找不成功那么添加關(guān)鍵字,相當于 find與add的結(jié)合;SETCUR SUM CLEAR DELETE NUM_ITEMS ITEM_SIZE規(guī)定一個關(guān)鍵字,用于起始迭代.通常在對數(shù)據(jù)排序后使用.計算并返回相同key下指定計數(shù)變量的和清空hash表,但不刪除數(shù)據(jù);刪除整個哈希表計算哈希表中觀測的條數(shù)計算哈希表的大小在哈希表中還有如下操作,與上述操作不同的是,使用以下的操作必須在允許哈希表 中出現(xiàn)相同的關(guān)鍵字前提下.HAS_NEXT在允許出現(xiàn)相同關(guān)鍵字情況下,是否存在下一條相同關(guān)鍵字的 觀測FIND_NEXTFIN
7、D_PREVREMOVEDUP在允許出現(xiàn)相同關(guān)鍵字情況下,尋找下一條相同關(guān)鍵字的觀測 在允許出現(xiàn)相同關(guān)鍵字情況下,尋找前一條相同關(guān)鍵字的觀測 在允許相同關(guān)鍵字出現(xiàn)的情況下,在哈希表中移去當前關(guān)鍵字 等數(shù)據(jù)REPLACEDUP在允許出現(xiàn)相同關(guān)鍵字情況下,使用新的數(shù)據(jù)代替當前關(guān)鍵字 對應(yīng)的數(shù)據(jù)等SUMDUP在允許出現(xiàn)相同關(guān)鍵字情況下,計算并返回當前美鍵字下的指 定計數(shù)的變量和由于哈希表的定義及操作的語法及使用語句較多,格式較新,下面我們通過一個例子 來解釋哈希表的定義及簡單操作.例定義一個哈希表并對其進行ADD、CHECK、 FIND、 REMOVE、 REPLACE、NUM_ITEMS 等操作.
8、程序data hash_sample;input fruit$ amount;cards;apple 100orange 200tomato 300cherry 400cherry 500run;data _null_;length fruit$ 10;length amount 8;if _N_=1 then do;declare hash myhash(dataset:" ,duplicate: "r");rc=('fruit');rc=('fruit','amount');rc=();call missing(
9、fruit,amount);end;rc=(key:'peach',data:'peach',data:500);rc=(key:'peach');if rc=0 then put fruit= amount=;rc=(key:'orange');if rc=0 then put 'the orange is exist'rc=(key:'tomato');if rc=0 then put 'tomato is not exist'rc=(key:'apple',da
10、ta:'apple',data:300);if rc=0 then do;rc=(key:'apple');if rc=0 then put fruit= amount=;end;rc=(key:'tomato',data:'tomato',data:200);totalitems =;put totalitems=;(dataset:'out');run;輸出結(jié)果為:表1程序輸出前后數(shù)據(jù)集hash_sample數(shù)據(jù)集out數(shù)據(jù)集fruitamountfruitamountapple100apple300orang
11、e200tomato200tomato300orange200cherry400cherry500cherry500peach500程序解讀:程序中把數(shù)據(jù)集映射到哈希表,并在哈希表中做添加、修改等簡單操作,最后輸出哈 希表.rc為接收返回值,程序中假設(shè)操作成功那么返回0,失敗那么返回非 0.length fruit$ 10;length amount 8;在定義哈希表前,先定義需要映射到哈希表的變量的類 型及長度,且必須與數(shù)據(jù)集中的類型匹配.declare hash myhash(dataset:'' .duplicate: "r");定義一個名為 myha
12、sh的哈希表,并把的數(shù)據(jù)集映射到哈希表上;duplicate: "r"表示相同關(guān)鍵字時數(shù)據(jù)會不斷代替,其結(jié)果是哈希表中只有相同關(guān)鍵字的最后一觀測的地址,如上例中“cherry 400將被忽略.rc=('fruit');定義關(guān)鍵字段為 fruit.rc=('fruit','amount');定義數(shù)據(jù)為fruit和amount,需要注意的是,這里假設(shè)只定義amount變量,那么哈希表中不存在fruit變量,而只是存在其對應(yīng)的地址,當以需要引用哈希表輸出的時候?qū)⒑雎詅ruit變量.rc=();表示定義完成.call missing(
13、fruit,amount);當未找到匹配值時,返回空值給指定變量.(key:'peach',data:'peach',data:500);在哈希表中增加一關(guān)鍵字為peach的記錄,假設(shè)已經(jīng)存在那么忽略.由于定義時數(shù)據(jù)項為fruit和amount,那么增加記錄時必須對應(yīng)全部羅列出來.且amount為數(shù)值型,那么500無單引號.rc=(key:'peach');if rc=0 then put fruit= amount=; 查找關(guān)鍵字為 peach的記錄, 假設(shè)存在返回 0, 使用if then打印查看詳細信息.rc=(key:'orang
14、e'); if rc=0 then put 'the orange is exist' 查找關(guān)鍵字為 orange 的記錄,使用 if then打印指定字符.你或許會迷惑為什么不直接打印orange的詳細信息?其實這就是 check和find的區(qū)別,可以理解為指針的形式, find不僅找到而且指針指向 find的記錄,而check 只是查看有沒有,并不移動指針,所以如果把if then指定的打印字符換成輸出信息,那么輸出的仍為peach的信息.rc=(key:'tomato');移去關(guān)鍵字為tomato的記錄信息.rc=(key:'apple
15、39;,data:'apple',data:300);替換關(guān)鍵字為 apple的記錄信息.由于 replace和check 一樣不會使指針移動,那么可以先使用find再打印查看是否替換成功.rc=(key:'tomato',data:'tomato',data:200);假設(shè)查找關(guān)鍵字tomato成功那么無操作,假設(shè)查找不成 功那么添加關(guān)鍵字等信息,相當于 巾nd與add的結(jié)合.需要注意的是ref同樣不移動指針.totalitems =;計算哈希表中觀測白數(shù)量并賦值給totalitems.(dataset:'out');把哈希表的
16、信息輸出到 out數(shù)據(jù)集.例在允許關(guān)鍵字重復出現(xiàn)情形下進行簡單操作.程序data hash_keys;input keys data;cards;2 1003 2002 3002 4001 5003 600 ;run;data _null_;length keys data 8;if _N_ = 1 then do;declare hash h(dataset:'hash_keys',multidata: 'y'); ('keys');('keys', 'data');();call missing (keys,
17、data);end;do keys=1 to 3;rc =();put '' keys= data=;(result: r);do while(r ne 0);rc =();put '' keys= data=;rc =();put '' keys= data=;rc =();put '' keys= data=;(result: r);end;();end;(dataset:'hash_out');run;輸出結(jié)果:表2程序數(shù)據(jù)集整理hash_ke)/s數(shù)據(jù)集hash_out數(shù)據(jù)集keysdatakeysdata
18、210021003200240023003200240015003700程序解讀:程序中在允許相同關(guān)鍵字出現(xiàn)的情況下映射到哈希表執(zhí)行簡單操作并輸出到數(shù)據(jù)集.在詳細解讀程序之前我們需要注意哈希表中向前及往后讀取與數(shù)據(jù)集中的前后相反且可以把 表中相同關(guān)鍵字的記錄看成循環(huán)隊列.哈希表的實際存儲為二叉樹結(jié)構(gòu),我們不必掌握其順序,但是我們必須掌握數(shù)據(jù)讀取的先后順序,為了掌握哈希表指針的移動情況,在打印前使用了 “區(qū)分每次打印時指針的位置.declare hash h(dataset:'hash_keys',multidata: 'y');multidata : '
19、y'表示允許哈希表中出現(xiàn)相同 的關(guān)鍵字記錄.rc =();由于關(guān)鍵字段為keys,且最大為3最小為1,我們可以在限制循環(huán)的同時對keys賦值,再使用keys在哈希表中查找.此語句為 rc = (key:keys);的省略方式.(result: r);查找是否存在相同關(guān)鍵字的下一記錄,存在那么返回非0.rc =();查找下一相同關(guān)鍵字的觀測,并且 指針指向該觀測.為了更好的理解每個操作在哈希表的運行,我們使用keys=2的數(shù)據(jù),按順序標號,每次操作完后打印 指針所指的數(shù)據(jù)記錄.圖1 : keys=2時順序觀測記錄data的值表3: keys=2時的輸出整理keys=2data=100ke
20、ys=2data=400keys=2data=100keys=2data=400keys=2data=300keys=2data=400keys=2data=300當keys=2時,指向記錄并打??;接下來查看是否存在下一記錄,成功返回0,而在哈希表中的下一記錄并不是,而是,此時指針并沒有移動到;進入do while第一次循環(huán)后把指針移動到并打印;語句把指針往前移,但這里并不是把移動到,而是移動到,打??;第二句再次把指針移動到;最后查找是否存在下一記錄,此時為的記錄, 存在那么繼續(xù)循環(huán).在執(zhí)行到第二次循環(huán)的前時,指針指向的是,當讀到 (result: r);時,r返 回的是0,即哈希表不會把第一
21、條記錄當做的下一記錄,否那么循環(huán)那么不會停止.跳出dowhile循環(huán)后();移去指針所指向的記錄,也就是記錄,所以我們在輸出數(shù)據(jù)集的時候沒有 記錄.指針的移動可以過程為一一一一一一.通過上例,我們可以發(fā)現(xiàn),在存在相同關(guān)鍵字時,使用has_nexti句查找是否存在下一記錄限制循環(huán),使用Rnd_next和find_prev移動指針遍歷數(shù)據(jù).當你需要訪問或修改的是相同 記錄下的某一無數(shù)據(jù)特征的記錄時,此方法非常管用.1.2 Hiter的定義及使用Hiter通常意譯為哈希迭代器,通過哈希迭代器遍歷哈希表中的關(guān)鍵字和數(shù)據(jù).在例中 的遍歷僅限于在相同關(guān)鍵字下遍歷,而在哈希迭代器中沒有此項要求.在使用之前需
22、要定義哈希表,如下:Declare hiter variable_name(hash_object_name);或者:Declare hiter variable_name;variable_name = _new_ hiter(hash_object_name);例如:declare hiter myiter ('myhash');定義了一個名字為myiter的迭代器,其對應(yīng)的哈希表為myhasho myiter的操作將在 myhash哈希表中進行.遍歷哈希表的語句格式如下:variable_name. ' option '();option的選項及功能如下:
23、語句功能FIRST允許出現(xiàn)相同關(guān)鍵字時, 在哈希表中取相同關(guān)鍵字觀測的A個觀測;LAST允許出現(xiàn)相同關(guān)鍵字時, 在哈希表中取相同關(guān)鍵字觀測的 第二個觀測;NEXT允許出現(xiàn)相同關(guān)鍵字時, 前觀測的舟-觀測;在相關(guān)關(guān)鍵字觀測的前提下取當PREV允許出現(xiàn)相同關(guān)鍵字時, 前觀測的前一觀測;在相關(guān)關(guān)鍵字觀測的前提下取當在不允許關(guān)鍵字重復出現(xiàn)的情況下,由于不需要了解迭代器對哈希表的讀取方式,我們只需要根據(jù)自己的情況選用FIRST和NEXT、LAST和PREV組合就可以遍歷哈希表中的記錄.在唯一關(guān)鍵字的哈希表中,我們通常對其排序輸出.例使用哈希迭代器遍歷例的數(shù)據(jù),并輸出到數(shù)據(jù)集.程序data hiter_k
24、eys;length keys data 8;if _N_ = 1 then do;declare hash h(dataset:'hash_keys',multidata: 'y',ordered:'no');declare hiter my_hiter('h');('keys');('keys', 'data');();call missing (keys, data);end;rc=();do while(rc = 0);put keys= data=;output;rc=()
25、;end;rc=();run;輸出結(jié)果為:表4:程序輸出結(jié)果整理hash_keys數(shù)據(jù)集hiter_keys 數(shù)據(jù)集keysdatakeysdata3100430054003200220033001500310043001100320015001100540033002200程序解讀:在上述程序中選擇使用 ordered:no'不排序,選擇last與prev組合遍歷哈希表.Last首先查 找是否存在多條相同關(guān)鍵字的記錄,假設(shè)不存在那么prev查找失敗跳出循環(huán);假設(shè)存在那么指向第二條,如keys=3時,第一次打印的是 data=200, prev語句查找前已記錄成功繼續(xù)循環(huán),第二次打印的
26、是data=300.可以發(fā)現(xiàn)在允許相同關(guān)鍵字出現(xiàn)的情況下哈希迭代器next語句和prev語句讀取數(shù)據(jù)的順序與 find_next和find_prev是一致的.假設(shè)把multidata: 'y'改成multidata: 'n'且加上 duplicate : replace時,哈希表中不再出現(xiàn)重復記錄且對與每個關(guān)鍵字僅存最后一條記錄.1.3綜合應(yīng)用例使用哈希表計數(shù).程序data hash_sum;input keys;cards;1 1 5 3 43 6 4 1 5;run;data hash_count;length c keys 8;if _n_ = 1 the
27、n do;declare hash myhash(suminc: "c", ordered: "y");declare hiteriter("myhash");('keys');();c = 1;end;do while (not done);set hash_sum end=done;rc =();end;rc =();do while(rc = 0);rc = (sum: c);output;rc =();end;stop;run;輸出結(jié)果:表5:程序輸出結(jié)果ckeys3123242516程序解讀:此程序使用了 s
28、um函數(shù),對出現(xiàn)相同的關(guān)鍵字進行計數(shù),而不是求和.這此定義哈希表時并沒有直接把數(shù)據(jù)集映射到哈希表,而是通過引用hash_sum表的記錄提取關(guān)鍵字及計數(shù)信息存儲到哈希表,最后使用哈希迭代器及sum函數(shù)計數(shù).declare hash myhash(suminc: "c", ordered: "y");當需要使用 sum或sumdup函數(shù)計數(shù)時,在 哈希表中必須定義用來計數(shù)的項,suminc: "c"定義了計數(shù)項變量c.需要注意的是c=1只是在每一次引用數(shù)據(jù)時添加到哈希表.do while (not done);set hash_sum e
29、nd=done;rc = ();end;通過se靜句每次讀取hash_sum數(shù)據(jù)集中的一條觀測,end=last指定當讀到最后一條記錄 是done=0并限制do循環(huán).在每讀取一條觀測時,()語句自動把數(shù)據(jù)集中的 keys當做關(guān)鍵字查找哈希表中是否存在相同關(guān)鍵字的數(shù)據(jù),假設(shè)存在那么不操作,假設(shè)不存在那么添加.而不管是否存在相同的關(guān)鍵字,c=1都會伴隨著查找寫入哈希表.雖然哈希表中僅有5個關(guān)鍵字,但c=1可以不斷寫入,最后通過對c求和即可完成.rc = ();do while(rc = 0);rc = (sum: c);output;rc = (); end;使用do while和哈希迭代器遍歷哈
30、希表,同時使用函數(shù)對哈希表中每個關(guān)鍵字的c逐一計數(shù)并output至U hash_count數(shù)據(jù)集.1.4哈希表及迭代器的的應(yīng)用例在實際應(yīng)用哈希表時常遇到兩個關(guān)聯(lián)數(shù)據(jù)集處理問題.假設(shè)一個表(data1)中每個id的標準值std,另一個表(data2)中為每個id的實際值,使用 hash輸出data2中比標準值大的觀 測及個數(shù).程序data data1;input id std ;cards;123Jrun;data data2;input id actual;cards;111112 2 2 2 23 3 3 3 3Jrun;data result1;if _n_=1 then do;decla
31、re hash myhash(ordered:'y');('id');('id','std','count');();call missing(std,count,actual);count=0;end;do while(not done);set data1 end=done;rc=();end;do while(not last);set data2 end=last;rc=();if rc=0 and actual>std then do;count+1;();output;end;end;(datas
32、et:'result2');run;輸出結(jié)果:表6:程序輸出結(jié)果整理result1數(shù)據(jù)集result2數(shù)據(jù)集idstdactualcountidstdcount1113122313312126223371程序解讀:程序中先建立一個空的哈希表,再把data1數(shù)據(jù)集映射到該哈希表,接著用過引用data2數(shù)據(jù)集找到對應(yīng)關(guān)鍵字并判斷、計數(shù)、車出.結(jié)果輸出了兩個數(shù)據(jù)集,result1為滿足要求的全部記錄,而result2為最后哈希表存儲的信息.在定義哈希表時并不直接把數(shù)據(jù)集映射到哈希表,原因是需要映射到哈希表中的data1數(shù)據(jù)集中沒有我們需要存儲計數(shù)的變量count,此時可以建立一個空的
33、哈希表,里面包含需要輸出的變量.出結(jié)果中result1數(shù)據(jù)集是由output語句輸出的,result2數(shù)據(jù)集是(dataset:'result2')語句輸出的,可以發(fā)現(xiàn),result1數(shù)據(jù)集包含了哈希表的內(nèi)容及data2中actual變量的數(shù)據(jù),而result2數(shù)據(jù)集只包含了哈希表定義的變量及最后計數(shù)的結(jié)果.其結(jié)果的不 同時由于哈希表中不存在定義變量以外的信息,且默認定義不允許相同的關(guān)鍵字存在.查看數(shù)據(jù)的結(jié)構(gòu)可以發(fā)現(xiàn) data1數(shù)據(jù)集中的id是唯一的,data2數(shù)據(jù)集中的id是重復出現(xiàn)的,在此類問題中,較好的處理方式是把id是唯一的數(shù)據(jù)集映射到哈希表,通過set引用重復出現(xiàn)id
34、的數(shù)據(jù)集進行數(shù)據(jù)處理.例中設(shè)計兩個數(shù)據(jù)集的連接,其中有一個是存在唯一關(guān)鍵字的,假設(shè)需要處理的數(shù)據(jù)集的關(guān)鍵字都不唯一,那么使用如下方法.例連接datal、data2數(shù)據(jù)集,并求kind下所有id變量amt的總和.表7:原始數(shù)據(jù)data1數(shù)據(jù)集data2數(shù)據(jù)集kindididamta1150a2240b1230b3330c2c3程序 data datal; input kind$ id$;cards;a1a2b1b3c2c35run;data data2;input id$ amt;cards;150240230330;run;data result1;length kind$ 8 id$ 8;i
35、f _n_=1 then do;declare hash h1(dataset:'data1',ordered:'y', multidata: 'y'); ('id');('id','kind');();call missing(id,kind);end;do while(not lastl);set data2 end=last1;();output;(result:r);do while(r ne 0);();output;(result:r);end;run;dataend;_null_;le
36、ngth kind$ 8 id$ 8;if _n_=1 then do;declare hash h2(ordered:'y');('kind');('id','kind','total');();call missing(id,kind,total);end;do while(not done);set result1 end=done;if ()=0 then do;total+amt;();end;else do;total=amt;();end;end;(dataset:'result2')
37、;run;輸出結(jié)果整理:表8:程序輸出結(jié)果整理result1數(shù)據(jù)集result2數(shù)據(jù)集kindidamtkindtotala150a120a230b80a240c100b150b330c230c240c330程序解讀:程序分為兩局部,第一局部為連接數(shù)據(jù)集,輸出為 resultl,第二局部為以 kind分組對 amt變量求和.第一局部中由于要求連接后的數(shù)據(jù)集存在變量amt,而映射到哈希表的 datal數(shù)據(jù)集中并不存在,那么選擇每連接一個相同的關(guān)鍵字就輸出到指定的數(shù)據(jù)集.由于set data2語句相當于遍歷data2數(shù)據(jù)集,那么每讀取 data2中的一條記錄,那么與哈希表連接查找相同的關(guān)鍵字并 使用output輸出,輸出后繼續(xù)查找是否存在下一個相同的關(guān)鍵字,假設(shè)存在那么輸出,直到查 找完畢,不存在那么退出循環(huán)讀取data2的下一條記錄.這里不使用()語句是由于我們需要的是每次查找成功的記錄且包含amt變量的數(shù)據(jù)集,而此處哈希表中僅存在data2的數(shù)據(jù).第二局部為以kind為關(guān)鍵字段對所有id下的amt求和,由于此處只需要求和的結(jié)果而 不是像第一局部需要的是每次連接的結(jié)果,選擇使用語句輸出哈希表的內(nèi)容.接下來我們只需定義一個不允許相同關(guān)鍵字出現(xiàn)的哈希表,每讀取resultl中的一條記錄,查找哈希表中是否存在相同關(guān)鍵字,假設(shè)存在相同關(guān)鍵字更新求和變量,假設(shè)不存在那么賦值
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 對技術(shù)研發(fā)產(chǎn)品進行在次加工的合同范本(3篇)
- 2024-2025學年河南省青桐鳴大聯(lián)考高一上學期12月月考歷史試卷
- 2025年雙方共同簽署的離婚協(xié)議
- 2025年個人購置豪華花園房合同范文
- 2025年九臺市報社資源共享合作協(xié)議
- 2025年炊具掛盤項目立項申請報告模板
- 2025年策劃合作賬戶管理解除協(xié)議書范本
- 2025年配藥中心項目提案報告模稿
- 2025年供應(yīng)商合作關(guān)系協(xié)議文本
- 2025年中國近距離運輸合同規(guī)定
- 國際市場營銷教案
- 全球變暖對工業(yè)企業(yè)的影響
- 《中醫(yī)藥健康知識講座》課件
- 2024年中國陪診服務(wù)行業(yè)市場發(fā)展趨勢預(yù)測報告-智研咨詢重磅發(fā)布
- 藝術(shù)欣賞與實踐(高職)全套教學課件
- 轉(zhuǎn)基因調(diào)查分析報告
- 英語-時文閱讀-7年級(8篇)
- 只有偏執(zhí)狂才能生存讀書心得
- 數(shù)據(jù)挖掘(第2版)全套教學課件
- 產(chǎn)學研融合創(chuàng)新合作機制
- 胃早癌-經(jīng)典課件
評論
0/150
提交評論