原创 神奇算法小集合

    整理一些今天看到的比較神奇的算法,可以拓寬下自己的思維和視野。 一、一個Float類型的絕對值     一個數值的絕對值可以通過與符號位的按位與操作來實現,對於IA32 32bit處理器,符號位是0x80000000,對於IA32

原创 隨機從長度未知的數組中抽取數字,且保證每個元素被抽到的概率相同

一、題目簡介     這個題目出自一道面試題,題目描述如下:    有一個函數int getNum(),每運行一次可以從一個數組V[N]裏面取出一個數,N未知,當數取完的時候,函數返回NULL。現在要求寫一個函數int get(),這個函

原创 基數排序簡介及LSD、MSD實現

一、簡介     基數排序(Radix Sort)屬於“分配式排序”(Distribution Sort)。基數排序法是屬於穩定性的排序。設待排序列爲n個記錄,d個關鍵碼,關鍵碼的取值範圍爲Radix,則進行基數排序的時間複雜度爲O(d(

原创 (2)啊哈!算法

一、三個問題     1、給定一個最多包含40億個隨機排列的32位整數的順序文件,找出一個不在文件中的32位整數。分別考慮在有足夠內存或有幾個外部臨時文件可用,但僅有幾百字節的內存的情況下,如果解決問題;     2、將一個n元一維向量向

原创 說說雙調排序

一、簡介     雙調排序(Bitonic Sort)屬於排序網絡(Sorting Network)的一種,它是一種可以並行計算的排序算法。     要理解雙調排序,首先需要理解雙調序列,雙調序列定義如下:     如果序列<a0, a1

原创 (3)數據決定程序結構

一、格式信函編程     編寫一個格式信函發聲器,該發聲器基於格式信函模板。可將數據從控制中分離出來。 二、用於特殊數據的強大工具     在實際應用中,每種工具都是用數據的某一視圖來解決特定但又通用的問題。主要包括超文本、名字-值對、電

原创 (14)堆

一、簡介     堆數據結構的性質:堆:任何結點的值都小於或等於其孩子的值的完全二叉樹爲小根堆,任何結點的值都大於或等於其孩子的值的完全二叉樹爲大根堆。爲了方便使用完全二叉樹的性質,假定數組從下標1開始。這樣: leftChild =

原创 一道有關hash的POJ題目:POJ1200 Crazy Search

一、題目描述     這裏把題目粘過來吧,網頁是在http://poj.org/problem?id=1200,題目描述如下:     Description:     Many people like to solve hard puz

原创 判斷無向圖和有向圖是否有迴路

一、無向圖迴路的判斷     對於無向圖,判斷其是否有迴路有四種方法,如下所示:     1、利用深度優先搜索DFS,在搜索過程中判斷是否會出現後向邊(DFS中,連接頂點u到它的某一祖先頂點v的邊),即在DFS對頂點進行着色過程中,若出現

原创 Unix編程藝術中的17點編程哲學原則

Unix編程藝術中的17點編程哲學原則           ---設計開發者的至高準則   譯者:July   二零一一年一月十三日。 參考文獻:The Art of Unix Programming  By Eric St

原创 (9~10)代碼調優、空間節省

一、代碼調優      1、問題1--整數取模     一種算法是: k = (j + rotdist)%n;    另一種優化方法是: k = j + rotdist; if(k >= n) k -=n;     2、問題

原创 (13)搜索

一、簡介     通過構造可生成一個隨機整數的有序集合(不允許重複)來引出問題的討論。C++相關的代碼使用了set數據結構,具體代碼如下所示: void gensets(int m, int maxval) { int *v =

原创 關於浮點數

一、浮點的精度限制     看了看《深入理解計算機系統》中有關信息存儲的內容,不得不感嘆浮點數的存儲真讓人望而生畏。下面就看看編程中遇到浮點數需要注意的東西吧。     浮點數的存儲格式與整數完全不同。大部分的實現採用的是IEEE 754

原创 (15)字符串

一、統計文本中各字符串出現的個數     利用map容器,代碼實現如下所示: #include <iostream> #include <map> using namespace std; int main() { map <stri

原创 線程和fork

一、簡介     當線程調用fork時,就爲子進程創建了整個進程地址空間的副本,父子進程通過寫時複製技術來共享內存頁的這一副本。     子進程通過幾成整個地址空間的副本,也從父進程那裏繼承了所有互斥量、讀寫鎖和條件變量的狀態。如果父進程