原创 ClusterONE算法詳解及優化

1. 引言 ClusterONE是由TamásNepusz,Haiyuan Yu和Alberto Paccanaro開發的一個由內聚力(cohesiveness)引導搜索的聚類算法。ClusterONE算法可以主要解決的是蛋白質複合物的類

原创 淺入快出--遞歸之漢諾塔(二)

引言 “槍炮分長短,佼人有深淺” 在第一篇遞歸方法論的文章中,我們討論瞭如何將問題高效地進行分解,以便於提高程序的計算效率,上一篇文章的地址如下: http://blog.csdn.net/huzhiyuan0000000/articl

原创 重建二叉樹

引言 這兩天偶然看到一道題,應該是《劍指offer》上的,原題如下: 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}

原创 淺入快出--遞歸之斐波那契數列(一)

引言 遞歸在計算機編程中,是指在函數的定義中使用函數自身的方法。能夠適用於遞歸方法的問題,一般都具有以下兩個特點: 該問題能夠分解成規模較小但方法形式相同的子問題該問題不會無限分解下去,必須具有一個終止條件所以一般的遞歸函數具有以下形式

原创 shell編程(二)--變量

“shell編程”的上一篇文章很多知識點都沒有提及,如果確實想學習shell腳本的各位看官們,推薦《Advanced Bash-Scripting Guide》,鏈接:http://www.tldp.org/LDP/abs/html/ 1

原创 shell編程(一)--入門

1. 變量 在學習shell編程之前,最好是瞭解過Linux和Vim基礎。 直接上個例子: #!/bin/bash #------This is a test------ var="Hazard" echo $var > data

原创 shell編程(三)--Linux系統監控腳本

1. 主要命令 1.1 uname(查看系統相關信息) uname [選項] -a 顯示全部信息 -m 顯示架構類型 -n 顯示網絡上的主機名稱 -r 顯示內核版本 -s 顯示操作系統名稱 -v 顯示操作系統版本 -p 輸出處理器類型或

原创 多線程歸併排序

歸併排序是典型的分治算法,所以可以用多線程來解決,在Linux平臺上進行多線程編程,必須在編譯時鏈接Linuxthread庫,如下圖所示: 因爲比較簡單,就直接上代碼了,講各種排序的博客也比較多。 #include <stdio.h>

原创 shell腳本報錯

報錯——syntax error near unexpected token 1. 這是因爲在Windows中的回車符在Linux中被表示爲了 ^M ,使用二進制模式打開腳本: vim -b monitor.sh 我們會發現在每行的末尾

原创 計數排序

簡要步驟 計數排序顧名思義,就是通過對待排序列計數來達到排序的目的。直接上圖 因爲計數排序針對小範圍內的整數效果比較好(能夠轉化爲整數的數據也能適用), 所以將初始序列設定爲{0, 1, 5, 2, 4, 2, 3, 4, 1, 2}

原创 希爾排序

簡要步驟 希爾排序是一種直接插入排序的優化排序方法。它通過設定的步長進行分組,對每組中的數據進行直接插入排序,隨着步長的減少,每組中的數據也隨着增加,直到步長減少爲1,那麼整組數據也就變爲有序的了。 初始序列:{ 4, 6, 3, 0,

原创 二分查找

簡要步驟 二分查找也被稱爲折半查找,它是比順序查找效率高的一種查找方法,但是它只適用於有序數據序列。 我們以升序序列爲例,首先,將序列中間位置的元素與查找元素比較,如果相等則查找成功;若不相等,就從中間位置將序列分爲左、右兩個子序列,當中

原创 堆排序

簡要步驟 堆是一棵完全二叉樹。 其中每個節點的值都不大於其父節點的堆,被稱爲大根堆; 其中每個節點的值都不小於其父節點的堆,被稱爲小根堆; 在非降序排列中,需要使用的是大根堆。以上圖中的大根堆序列arr[7]爲例,arr[0]的左孩

原创 散列查找

簡要步驟 若找到元素與其在數據集中的位置存在的某種對應關係,那麼就能通過這種關係找到數據的位置。這種對應關係被稱爲散列函數(哈希函數),通過這種函數簡歷的表被稱爲散列表(哈希表)。在構建哈希表的過程中也可能會產生衝突(也就是產生了相同的哈

原创 基數排序

簡要步驟 與計數排序一樣,基數排序也屬於分佈類排序。它設定一些基數(也被稱爲“桶”),通過將待排數據分配至“桶”中進行排序。以整數爲例,我們將基數設定爲0~9,根據高低位遍歷順序的不同,基數排序分爲最高位優先(MSD)和最低位優先(LSD