原创 算法__快速排序

快速排序:選擇一個基數,分別從數組的左邊和右邊與基數比較,大的放在基數的右邊,小的放在基數左邊。然後,再在基數的左右選擇基數排序直至最後數組排序好。快速排序右兩種實現:佔坑法和互換法。 佔坑法: 4 7 3 5 2 6 1 8 選擇基數(

原创 算法__桶排序

上一次的計數排序不能對浮點數排序,所以有了桶排序。桶排序: 新建一個集合,每個元素中是一個集合來存儲一個局域的數,然後遍歷這個集合。 2.5 1.3 3.6 0.3 5.5 桶的數量:可以是數的個數。桶的區域 = (最大數 -  最小

原创 算法__堆排序

二叉堆 是一種完全二叉樹,堆可以分爲最大堆和最小堆。最大堆:父節點的值都大於兩子節點的值;最小堆:父節點的值都小於子節點的值。 圖中就是一個最大堆。 1.那一組數據如何成爲一個最大堆呢 7 1 3 10 5 2 8 9 6   先將它弄

原创 《 android NDK 》 C++語言入門總結

文章目錄-前言-hello world-命名空間-引用變量引用變量作爲參數引用變量作爲返回值-函數內聯函數默認參數-類構造函數析構函數初始化列表對象的動態創建和釋放-友元函數/友元類友元函數友元類-繼承-抽象類-模板 -前言 上次

原创 算法__求最大公約數

我們在小學時候就學過好幾種求最大公約數的方法:輾轉相除法,更相減損法,短除法。 輾轉相除法:是用較大的數除以較小的數。如果整除則較小的數就是這兩個數的最大公約數,如果沒有的話,就用較小的數和餘數中大的數除以兩個數中較小的數,直至整除爲止,

原创 android__進程保活最新適配

    “安卓手機爲什麼老是這麼卡”,      “安卓手機高配置的低能兒” 作爲一個安卓開發工程師,不知道聽到別人這麼說安卓的時候,你怎麼感想。 之前遇到個問題,app在後臺殺死後,用戶進行暖啓動,用戶會直接進入之前瀏覽過的頁面。這時公

原创 算法__冒泡排序

冒泡排序:從數組的0位置開始往右開始一個個比較大小,如果座標小的數大於座標大的數,則兩個座標的數交換,然後再和下一個數比較,直至整個循環完則順序排好。直接舉個例子: 5 2 3 1 6 7 9 8 第一輪:              

原创 算法__雞尾酒排序

雞尾酒排序:雞尾酒排序是冒泡排序的升級,冒泡排序在第一輪比較完之後,會從0位繼續比較;雞尾酒排序是在第一輪排序完之後從尾部往前比較。舉個例子: 2 3 4 5 6 7 8 1 冒泡排序:               第一輪:1. 2和3比

原创 算法__選擇排序

   之前寫到過冒泡排序。但是,冒泡排序需要一個個比較,交換位置。這樣會有很多的讀寫操作,會影響cpu效率。所以,出現了選擇排序。選擇排序,每次循環選擇最小的數字與這次循環的第一位置的數字,交換位置,直至最後。舉個例子,說明一下: 7 2

原创 算法__優先隊列

最大優先隊列:無論入隊順序,最大的數字先出隊; 最小優先隊列:無論入隊順序,最小的數字先出隊; 7 5 4 2 3 1   二叉樹:  插入一個數字 8:   8  大於 4,4和8交換;  8 大於7 ,8和7交換。 代碼如下:

原创 算法__插入排序

插入排序:就是將數據插入到已經排好序的數列中,使得最終的數列順序正確。 舉個例子: 5 8 3 5 2 第一輪: 這個數組,我們可以先把 5 這個第一位數字視爲已經排好的數列,將8加入順序排好的隊列中。 1.  8和5做比較,8大於5,所

原创 算法__排序總結

排序 是將一組亂的數據按一定準則排好順序。 一般按照時間複雜度大概分爲三類:          一: O(n^2) 冒泡排序,選擇排序,插入排序,希爾排序(性能優於O(n^2),差於O(nlog));         二: O(nlogn

原创 設計模式__建造者模式

定義: 將一個複雜對象的構建和表示分離,使得他的同一個構建可以有不同的表示。(主要是對產品的封裝,強調構建和表示) 適合場景:1. 一個複雜產品,不同方法使用順序不同,表示不同;                  2. 一個產品構建是參數

原创 算法__基數排序

基數排序:按照從右往左的順序,依次將每一位都當作一次關鍵字,然後按照該關鍵字對數組排序,同時每一輪排序都基於上輪排序後的結果;當將所有的位排序完之後,整個數組都達到了有序狀態。  基數是什麼呢?對於十進制整數,每一位都可能是0~9其中的某

原创 算法__歸併排序

歸併排序:利用遞歸與分治技術將數據序列劃分成爲越來越小的半子表,在對半子表排序後,再用遞歸方法將排好的半子表合成爲越來越大的有序序列。 例子: 8 2 1 6 5 7 4 3 拆分:       左子樹: 8 2 1 6       右子