面試題之大量資料如何排序

2021-09-29 21:07:10 字數 710 閱讀 3545

例:現有一千萬手機號碼,說說你有什麼方法可以進行快速排序?

對於這種題目,利用常規的排序方法(如插入排序,快速排序……),自然是不能解決問題的!因此資料量太大。注意內部排序和外部排序的區別。

排序演算法分為內部排序和外部排序:

(1)內部排序:指的是待排序記錄存放在計算機隨機儲存器(記憶體)中進行的排序過程;我們熟悉常用的氣泡排序,選擇排序,插入排序,快速排序,堆排序,歸併排序,希爾排序……等都屬於內部排序方法;

(2)外部排序:指的是待排序記錄的數量很大,以致記憶體一次不能容納全部記錄,在排序過程中需要對外存進行訪問的排序過程;

基本思路:外部排序指的是大檔案的排序,即待排序的記錄儲存在外部儲存器上,在排序過程中需進行多次的內、外存之間的交換。首先將打檔案記錄分成若干個子檔案,然後讀入記憶體中,並利用內部排序的方法進行排序;然後把排序好的有序子檔案(稱為:歸併段)重新寫入外存,再對這些歸併段進行逐個歸併,直到整個有序檔案為止。

例子:假設有10 000個記錄的檔案需要排序,則先把這10 000個記錄檔案分成10個歸併段(r1…~r10,每段1000個記錄),然後逐個讀入歸併段進行內部排序(共10次),然後把排序好的歸併段重新寫入外存中,再進行兩兩歸併,直到得到乙個有序檔案為止。

出處:

華為面試題之大整數相加

問題描述 在計算機中,由於處理器位寬限制,只能處理有限精度的十進位制整數加減法,比如在32位寬處理器計算機中,參與運算的運算元和結果必須在 231 231 1之間。如果需要進行更大範圍的十進位制整數加法,需要使用特殊的方式實現,比如使用字串儲存運算元和結果,採取逐位運算的方式。如下 98765432...

大量資料處理面試題考試題

1.根據快速排序劃分的思想 1 遞迴對所有資料分成 a,b b b,d 兩個區間,b,d 區間內的數都是大於 a,b 區間內的數 2 對 b,d 重複 1 操作,直到最右邊的區間個數小於100個。注意 a,b 區間不用劃分 3 返回上乙個區間,並返回此區間的數字數目。接著方法仍然是對上一區間的左邊進...

c語言面試題之大數運算

請使用 計算 1234567891011121314151617181920 2019181716151413121110987654321 include iostream include algorithm include stdio.h include string h using names...