原创 Program work 13. Heap Sort in Java

關鍵在於最大堆的建立和重構 (其實兩個過程是一樣的) 因爲堆是平衡二叉樹, 所以數組可以直接用下標表示父子的節點關係, 數組要從下標1開始. 將最大值移到數組只需要O(n) 重構堆需要O(lgn) 所以upper bound is O(n

原创 HBase note. Data Operations and Versions

目前只有四個操作: get: 拿特定row put: 插入多行新的rows或者更新已有的rows scan: 獲取指定table的指定attributes的rows delete: 刪除table中的某一行. HBase不會馬上delet

原创 Program work 11. Quick Sort in Java

一般情況下O(n*logn) 比一般排序算法都要快 最壞情況, 在數組已經排序好, 接近排序好, 需要O(n*n). 平均時間複雜度也是O(n*logn) Pseudocode: quickSort(array, left, righ

原创 Sicily 1934. 移動小球

用兩個數組模擬雙向列表 // Problem#: 1934 // Author#: Reid Chan #include <iostream> using namespace std; void initial(int *f, int

原创 Program work 18. Bubble Sort in Java

每輪操作將該輪最大的數放入數組"末尾" 最差平均時間複雜度爲O(n*n) 最好時間複雜度爲O(n), 需要加標記, 且數組已排好序的情況下 Pseudocode: bubblesort (A : list[0..n-1]) {

原创 Program work 15. Shell Sort in Java

Shell本質上就是insertion sort 但是在insertion sort之前, 先做gap大於1的insertion sort 這樣在最後一步做insertion sort的時候, 由於數組已經接近排序完成 所以最後的inse

原创 Program work 14. Insertion Sort in Java

最差時間複雜度: O(n*n) 最好時間複雜度: O(n), 已經排好序 平均時間複雜度: O(n*n) Pseudocode: for i ← 1 to length(A) - 1 j ← i while j > 0

原创 Program work 16. Radix Sort in Java

不是基於比較的排序 是基於位數上的排序, 且僅適用於整數. 此位數的排序不會影響前一位數排序好的相對位置, 是stable的排序 影響效能的關鍵在於數組中最大數字的位數 最差時間複雜度爲O(d*n). 另外需要O(n)space d是最

原创 Program work 17. Selection Sort in Java

每輪循環將該輪最小的數放在前面已排好的數的末尾 最好最壞平均複雜度是O(n*n) Pseudocode: selectionSort (arr) { Find the smallest card. Swap it with t

原创 Program work 12. Merge Sort in Java

最好時間複雜度可達O(n)  最差時間複雜度爲O(n*logn) 平均時間複雜度爲O(n*logn) 需要額外的O(n)空間 Pseudocode: merge(arr, tmp, begin, end) { if (begi

原创 HBase note. Data model

名詞概念. Table: 一個Table由衆多rows組成, 需要在建表時就決定 Row: 一個row包含row key還有一個或多個columns. Rows以row key按字母從小到大排序, 跟hdfs存儲模型一致. Column:

原创 HBase installation. HBase install (1.0.0)

因爲需要研究源碼的關係 個人不會從官網上直接下載安裝文件 一般選擇從git下來maven project, 然後對裏面source code進行編譯打包生成tar.gz 使用這個tar.gz作爲安裝文件 大概流程: git clone

原创 HBase source code. HStore

配置 有部分配置參數已經在StoreFile中介紹過了 StoreFile, 都是跟compaction相關的參數, 重複的不作累贅. hbase.hstore.time.to.purge.deletes: 0 是一個延遲清除帶有未來時

原创 Technique Java. ReentrantReadWriteLock

網上沒有找到比較好的參考文章和實例 → →.... 這個類有如何幾個性質: 1. 獲得鎖順序. 這個類並不支持按照優先順序獲得鎖這種機制, 但是還是能提供一種相對公平獲得鎖機制. 主要分爲兩種模式: 不公平模式: 這種模式並沒有明確指明

原创 Sicily 1194. Message Flood

注意: 不區分大小寫, 所以需要轉換成統一小寫, 方便比較 另A爲聯繫人集合, B爲發送人集合 題意就是求: A - B // Problem#: 1194 // Author#: Reid Chan #include <iostrea