原创 堆排序 選擇排序的升級

   選擇排序的思想是每次選擇未排序列中最小值的下標,使它對應的值與未排序數列中第一個的值交換內容。從而達到選擇的目的。    而堆排序就是每次調整後,選出最大值在堆頂,然後使堆頂放入數列末尾,然後數列長度減1, 這樣就總使未排數列

原创 大數據處理之Hash哈希表(一)

 現在的網絡公司對於數據的處理的非常看重的。比如拿百度來說,10大熱搜詞就是從海量的用戶搜索的數據中找到的,我們想的很簡單,只要把所有用戶搜索的數據按搜索次數 排列下來,隨便用個快排?歸併?取前10種出現頻次最高的不同的數據就好了,可是用

原创 線程同步----鎖

 線程同步就是多個線程完成同一任務而進行的協調不違反規則的合作過程。    例如線程A和線程B的合作任務就是將初值爲0的變量x 加爲1。程序結束後,x的值應該爲1纔是我們想要的。如果x沒有被++仍爲0,或者++了2次變爲2了,都是失敗的結

原创 Linux寫實拷貝技術

何爲寫時拷貝技術?這就得先講講linux的分頁加載機制。   分頁加載機制就是linux把內存劃分成很多的小塊,進程中的數據按照某種對應關係(頁表)放入內存中。   這麼做的目的是爲了提高內存的使用率。可以不必讓一個進程中的所有東西都連着

原创 快速排序 常考排序算法

冒泡排序是交換排序,它是非常慢的,比起幾種簡單排序,例如選擇,插入排序。冒泡排序的時間性能要差的多。因爲總要交換數據,只是兩個兩個的比,不僅邏輯判斷多,交換數據的頻次也高。  但交換排序就如此失敗嗎。不,它反而是很成功的,因爲它有個頂

原创 冒泡排序

冒泡排序就如他的名字,每次都有泡泡浮上來,泡泡自然是最輕的,最小的,一次遍歷數列侯最小的會交換到第一位(下標爲1,下標0爲哨兵位)。  其實也可以相反的來,每次遍歷有最大的交換到最後一位,沉底法,就如石頭沉到底一樣。 我用的就是沉底。

原创 直接插入排序

直接插入排序比起冒泡和選擇稍微難理解一點,不過也好,畢竟是簡單排序,也就是那種比一目瞭然多想幾下的程度。   它的基本思想是什麼呢?   插入插入無非就是插入,插入哪啊?插入亂序數列?那顯然不可能,那是胡插。   不是插入亂序數列那

原创 單鏈表有關 環 的問題

說起關於單鏈表的環,無非以下幾種常見問題  。  1求單鏈表是否有環 。   2求單鏈表的入環點。     3求環的長度。  對於問題1,記得我第一次接觸的時候,比較暴力,直接定義了個數組存放鏈表所有節點的地址。 遍歷鏈表每讀到下一個節點

原创 大數據處理之哈希表(二)--出現頻率最多的top xxx 位

上篇文章中只是求了出現頻次最高的值,可是大數據處理往往需求的是top 10 ,top 100或者某一段區間的數據。顯然只定義一個Hash a是不能放下的。如果是求出現頻次top100呢?最起碼定義 Hash arr[100]吧。比如拿計數

原创 歸併排序

 研究過歸併排序和堆排序的時間複雜度的朋友們應該知道它們的時間複雜度都是nlog2n。堆排序是利用了完全二叉樹,做了很多次堆調整才達到了排序的目的。相關堆排序的內容可以看看選擇排序的升級---堆排序,在此不多贅述。    其實歸併排序也

原创 八皇后及回溯算法

   記着剛接觸到八皇后的問題時,自己總是想不通如何使判斷步驟退回來,自己套了好多個循環,最後還是這種情況  1  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  1

原创 希爾排序 插入排序的升級

直接插入排序我們是知道的,它比冒泡和選擇快的原因是數據交換的次數相對較少,不像冒泡那樣,每次內循環遍歷時兩個兩個數比較然後換來換去,如果是完全反序的,那就得每次都進行交換操作,交換操作可比邏輯判斷操作要費時多,這也是之前問的,爲什麼時間複

原创 淺談5中io模型和同步io、異步io及R模式P模式

   五種io模型:  阻塞io模型  非阻塞io模型  io複用模型  信號驅動io模型  異步io模型 其中阻塞與非阻塞  阻塞io:就是函數調用後,會被掛起,直到內核接受到了io的讀寫,拷貝到了應用進程的用戶態後,函數才返回 非阻塞

原创 線程同步----信號量

上篇文章《線程同步---睡覺與喚醒》遺留了一個問題,就是會出現死鎖的情況。所以爲了解決這個問題,又要引入一個新的同步概念,那就是信號量。     起初我個人在理解的時候陷入了一個奇怪的圈子,就總憑感覺和名字認爲這個信號量是不是一個儲存我之

原创 快速排序的非遞歸實現

   快速排序的思想是先從一數列中找出一個樞軸點,這個樞軸點左邊的數都比它小,右邊的數都比它大,也就是說樞軸點的位置已經是有序的了。例如 5 1 7 9  2   3 8   使用一次快速排序後會變成這樣· · · 5 · · ·。