1. 10G文件,保存的都是數字,如何找最大的100個
設置一個100大小的數組,或者鏈表(有序的,比如說升序),初始塵昌逗都是預先讀入的100個數字排序後的結果,然後每次從文件中讀入一個數字跟這個100個迅洞數字比較,從小到大比較,比較過程中發現比某個小了就插入當前位置i,是插入不是替換,大循環完成以後數派賣組(鏈表)裡面的100個數字就是最大的100 個數字了
btw:個人意見,比較爛,但肯定能實現;
2. java讀取一個10G大小的文本文件,怎麼才能快速的得到該文本文件裡面長度最長的單詞
沒辦法快速,無論如何,你10G 的內容必須得全部讀一遍。
常規的面試中這個涉及到內存的使用,只能使用遠遠低於數據大小的內存去完成任務。
如果是排序,需要答螞橋分組,結果轉儲,然後歸並。
這里只要最長的一個,那就簡單多了清猛。
定義一個變數放置最長的,逐行去讀文件,比變數長的就物彎更新變數,讀完文件結果就出來了。
3. 用2G的內存找到10G大小數組中的中位數有什麼好的方法么
版上的答案大致是這樣的:
假設待排序的整數時32bit,先用此大前4bit做「敏扒絕桶」,估計出最中間的「桶」,然後依次循環
直橋姿到找到中位數。
ps:這道是比較經典的ms面試題目
4. 10G數據,1G內存,如何排序
當數據量超過內存量,旁旦通過一般意義上的排序演算法已經不能勝任排序工作了。我們需要藉助於外存,保留我們排序的中間階段。
(1)按可用內存的大小,把外存上含有n個記錄的文件分成若干個長度為L的子文件,把這些子文件依次讀入內存,並利用有效的內部排序方法對它們進行排序,再將排序後得到的有序子文件重新寫入外存。
(2)對這些有序子文件逐趟歸並,使其逐漸由小到大,直至得到整個有序文件為止。(歸並過程需要用到敗者樹或最小堆和一個內存緩沖區)。
分別排序:根據內存1G,數據10G,我們將10G數運滑擾據切分成10份,通過內存調用磁碟的方式,每1G進行排序,排序結束後,我們會得到10個有序的數據數組。
歸並:多路歸並過程可以使用敗者樹或最小堆。為方便起見我還是用最小堆吧,原理是一樣的。
內存中開辟一個大小為10的最小堆,和一個緩沖區(小於1G,不要太小)。
取10份排序好的數據的首位進入最小堆。則最小的數位於堆頂,移除堆頂元素並寫入緩沖區,然後從移除元素的元素所屬數組中的下一位進入最小堆,在次移除堆頂進入緩沖區...直到緩沖區滿,緩沖區回寫磁碟,清空緩沖區,再次將數據置入最小堆...
直到10份數據全部寫完,然後將最小堆的元素按順序回寫磁碟即可。讓讓
5. 100億個數,找出前10大的數(內存10G)100億個數,找出前10億大的數(內存10G)
中國數詞單位的最大單位為10的72次方,100億也就是10的9次方,剩下的樓主自己算去吧。
6. 如何使用256M內存對2G數據進行排序
首先說明一點,64bite的整數足以存儲10G這個數蔽殲值。然後換個思維理解,比如有20個數,數的范圍是(1-10),而內存只能裝入宏老沖兩個數。用內存里的這兩個數統計范圍為(0,5),(6,10)的數出現的次數,比如內存里兩個數的取含判值是4,16,顯然中位數(姑且認為是求第10位)出現在(6,10)中的第6出現的數。這個時候,內存兩個數統計范圍變成(6,8),(9,10),統計這兩個區間內范圍出現的數的次數,如果是8,8,中位數是在(6,8)中第6次出現的數。第三次統計,內存兩個數統計的范圍是(6,7),(8),如果是7,1,那麼所求的中位數還是(6,7)第6次出現的數。第四次統計,內存兩個數為(6),(7),如果內存第一個數>=6,則所求數為6,否則所求數為7。
7. 100億個數,找出前10大的數(內存10G)
你倒數100億前10個就好
8. 求助:oracle 10g 內存怎麼分配 win2003 32bit
類似配置,我的設置是SGA=1G,PGA=600M,內存管理自動模式
9. 手機內存10g大概是多少
手機內存1G大約是1024m ,10G就是10240m啦~大約只能裝下一個王者旁世榮有就沒辦肆啟拍法繼續運行啦~ 手機表示著10G內存,但我們實際用起來並不會能用到這么多,你只能用到7~6.5G的樣子,還有有的手機比如小米,會通過互聯網遠程聯系手機做升級系統,這樣就會消耗空間,如果正好裂羨您平常不怎麼深度使用手機,不會刪除那些安裝包,那您的手機的儲存空間就會非常告急,正常情況下,沒有游戲,光看幾部電影用10G的手機還是基本夠用的。