原文:編程珠璣:位圖法排序

問題描述 輸入:一個最多包含n個正整數的文件,每個數都小於n,其中n 。如果在輸入文件中有任何正數重復出現就是致命錯誤。沒有其他數據與該正數相關聯。 輸出:按升序排列的輸入正數的列表。 約束:最多有 MB的內存空間可用,有充足的磁盤存儲空間可用。運行時間最多幾分鍾,運行時間為 秒就不需要進一步優化。 程序設計與實現概要: 應用位圖或位向量表示集合。可用一個 位長的字符串來表示一個所有元素都小於 的 ...

2012-08-14 14:06 1 8146 推薦指數:

查看詳情

位圖排序

分析:那么我們來看一個具體的例子,假設我們要對0-7內的5個元素(4,7,2,5,3)排序(這里假設這些元素沒有重復)。那么我們就可以采用Bit-map的方法來達到排序的目的。要表示8個數,我們就只需要8個Bit(1Bytes),首先我們開辟1Byte的空間,將這些空間的所有Bit位都置 ...

Sun Sep 02 05:15:00 CST 2012 0 5333
[珠璣之櫝]二分思想與分治排序思想

  二分查找是《編程珠璣》作者很喜愛的一個話題,之前我曾經專門寫了一篇博文:如何寫出正確的二分查找?——利用循環不變式理解二分查找及其變體的正確性以及構造方式,在這里將換幾個角度,繼續探討二分查找的相關內容,以及與它聯系緊密的分治排序思想。     目錄 二分思想和分治 ...

Fri Jul 05 17:47:00 CST 2013 1 3577
編程珠璣,字字珠璣》1234讀書筆記——多路歸並排序

寫在前面的 2012年3月25日買下《編程珠璣》,很期待但不知道它能給我帶來什么! 編程珠璣,字字珠璣。但是翻譯有點拗口,有時候整句話讀下來都不知道在講什么,多少有點掩飾了珠璣的魅力,真懷疑是不是直接有道翻譯了。 位圖數據結構 在“開篇”的里,講述了排序的一個問題,大意就是,對一個“最多 ...

Thu Mar 29 20:49:00 CST 2012 4 4795
[珠璣之櫝]位向量/位圖的定義和應用

  位向量/位圖是一個很有用的數據結構,在充分利用小空間存儲大量數據方面非常具有優勢,Linux內核中很多地方都是用了位圖。同時,它不但基礎,而且用到了很多編程語言的知識,以及對細節的把握,常常作為面試題出現。這里將要介紹它的實現、操作、應用。   與位圖(bitmap)比,我更傾向於用位向量 ...

Tue Jun 25 00:42:00 CST 2013 5 7860
對大數據量進行排序--位圖

題目:對2G的數據量進行排序,這是基本要求。 數據:1、每個數據不大於8億;2、數據類型位int;3、每個數據最多重復一次。 內存:最多用200M的內存進行操作。 我聽過很多種類似問題的解法,有的是內存多次利用,有的用到了外存,我覺得這兩種做法都不是比較好的思想,太慢。由於這個題目看起 ...

Fri Jul 28 02:37:00 CST 2017 0 4002
對一千萬條數據進行排序---編程珠璣第二版 第一章

本書第一章提出了一個看似簡單的問題,有最多1000萬條不同的整型數據存在於硬盤的文件中,如何在1M內存的情況下對其進行盡可能快的排序。 每個數字用4byte,1M即可存儲250 000個數據,顯然,只要每次對250 000個數據排序,寫入到文件中即可,重復40次。 那么如何選出每次遍歷 ...

Thu Nov 20 07:08:00 CST 2014 0 2644
大數據位圖(無重復排序,重復排序,去重復排序,數據壓縮)之Java實現

1,位圖介紹 位圖的基本概念是用一個位(bit)來標記某個數據的存放狀態,由於采用了位為單位來存放數據,所以節省了大量的空間。舉個具體的例子,在Java中一般一個int數字要占用32位,如果能用一位就表示這個數,就可以縮減大量的存儲空間。一般把這種方法稱為位圖,即Bitmap ...

Sun Oct 15 06:12:00 CST 2017 2 3604
Select 選擇算法 - 編程珠璣(續) 筆記

Select 算法 I 編程珠璣(續)介紹的 Quickselect 算法 選擇 N 個元素中的第 K 小(大)值,是日常場景中常見的問題,也是經典的算法問題. 選取 N 個元素的數組的中的第 K 小(大)值,最簡單的想法是將數組排序后直接選取. 那么這種方法的時間復雜度是O(N log N ...

Sun Sep 04 23:27:00 CST 2016 0 4121
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM