Skynet

          ---------- ---------- 我的新 blog : liukaiyi.cublog.cn ---------- ----------

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            112 Posts :: 1 Stories :: 49 Comments :: 0 Trackbacks
          發現 自己寫個小程序 - 文本存儲二叉結構的hashMap。 那個費勁! 痛下決心 仔細學習 算法 。
          (如果大家有興趣就跟我一起 - 《算法導論》,也望大家監督我能每天拿出一小時和大家分享算法,算法代碼我會盡量使用 py 和 解決一些分析日志的應用上靠 (其實,上面費勁的 二叉hash 是為了分析日志中 - 希望能實現 多個大文件不需要合并就能根據某列排序輸出! 目前的解決辦法 find .. -exec cat {} \; | perl |sort 的笨方法 )

          1. 算法在計算中的作用 (筆記) :
             算法(algorithm):就是定義良好的計算過程,它取一個或一組作為輸出,并產生一個或一組自作為輸出。

          一些函數運行級別  # http://www.wolframalpha.com/ 函數都可在網站里運行
          這里 n=一億條數據 :
          log_2(n)     30
          n^0.5        31622
          n            10^9
          n*log_2(n)   2.9^10
          n^2          10^18
          n^3          10^27
          2^n          無窮
          n!           10^362880


          需要知道的復雜度 - 在某一個臨界點后 合并會別插入要快的
            插入排序  復雜度 n^2    http://www.wolframalpha.com/input/?i=n^2
            合并排序  復雜度 n*log_2(n)  http://www.wolframalpha.com/input/?i=n*log_2%28n%29+

          網上的查找到的一些名稱:參考 http://www.51testing.com/?uid-130868-action-viewspace-itemid-66729
          1.1穩定排序  非穩定排序 -
            穩定排序是所有相等的數經過某種排序方法后,仍能保持它們在排序之前的相對次序,。反之,就是非穩定的排序。
          1.2內排序  外排序
            在排序過程中,所有需要排序的數都在內存,并在內存中調整它們的存儲順序,稱為內排序; 在排序過程中,只有部分數被調入內存,并借助內存調整數在外存中的存放順序排序方法稱為外排序。
          1.3算法的時間復雜度  空間復雜度
            所謂算法的時間復雜度,是指執行算法所需要的計算工作量。 一個算法的空間復雜度,一般是指執行這個算法所需要的內存空間。


          幾種常見的算法復雜度:
          2.1冒泡排序 (Bubble Sort)    O(n^2)
          2.2選擇排序 (Selection Sort) O(n^2 )
          2.3插入排序 (Insertion Sort) O(n^2)
          2.4堆排序    O( nlog(n) )
          2.5歸并排序  O( nlog_2(n)  )
          2.6快速排序  最好 O( nlog_2(n) ) 最壞 O(n^2)




          wiki 參考 :http://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95
          穩定的
          • 冒泡排序(bubble sort) — O(n2)
          • 雞尾酒排序 (Cocktail sort, 雙向的冒泡排序) — O(n2)
          • 插入排序 (insertion sort)— O(n2)
          • 桶排序 (bucket sort)— O(n); 需要 O(k) 額外空間
          • 計數排序 (counting sort) — O(n+k); 需要 O(n+k) 額外空間
          • 合併排序 (merge sort)— O(n log n); 需要 O(n) 額外空間
          • 原地合併排序 — O(n2)
          • 二叉排序樹排序 (Binary tree sort) — O(n log n)期望時間; O(n2)最壞時間; 需要 O(n) 額外空間
          • 鴿巢排序 (Pigeonhole sort) — O(n+k); 需要 O(k) 額外空間
          • 基數排序 (radix sort)— O(n·k); 需要 O(n) 額外空間
          • Gnome sort — O(n2)
          • Library sort — O(n log n) with high probability, 需要 (1+ε)n 額外空間

          [編輯] 不穩定

          [編輯] 不實用的排序演算法

          • Bogo排序 — O(n × n!) 期望時間,無窮的最壞情況。
          • Stupid sort — O(n3); 遞迴版本需要 O(n2) 額外記憶體
          • Bead sort — O(n) or O(√n), 但需要特別的硬體
          • Pancake sorting — O(n), 但需要特別的硬體
















          整理 www.aygfsteel.com/Good-Game
          posted on 2009-11-17 23:12 劉凱毅 閱讀(2518) 評論(0)  編輯  收藏 所屬分類: 算法/函數
          主站蜘蛛池模板: 策勒县| 叙永县| 天全县| 晋州市| 广东省| 广汉市| 汽车| 周口市| 嘉峪关市| 金湖县| 剑河县| 竹北市| 东城区| 客服| 墨竹工卡县| 简阳市| 咸宁市| 揭西县| 洛阳市| 沂水县| 海兴县| 恭城| 仁化县| 新沂市| 新闻| 惠东县| 大安市| 成都市| 鹰潭市| 洛隆县| 老河口市| 鄂尔多斯市| 文安县| 赣州市| 巫山县| 隆尧县| 乌拉特后旗| 镇巴县| 香港| 晋宁县| 华池县|