原创 線性查找法

順序查找(Sequential Search)又叫線性查找,是最基本的查找技術。它的查找過程爲:從表中第一個(或最後一個)記錄開始,逐個進行記錄的關鍵字和給定值比較,如果某個記錄的關鍵字和給定值相等,則查找成功,找到所查的記錄。

原创 滿二叉樹與完全二叉樹【有性質還沒有理解】

滿二叉樹 一顆深度爲k且有2^(k-1)個節點的二叉樹稱爲滿二叉樹 完全二叉樹 當二叉樹的深度爲h時,它的h層節點必須都是連續靠左並不可隔開的(滿二叉樹也符合),並且1~h-1層的結點數都達到最大個數(即1~h-1層爲一個

原创 如何構建一個大根堆

數組可以看成是一個完全二叉樹,大根堆是一個完全二叉樹 構造大根堆 例子1:[O(N)---->從下到上] 因爲堆是對父節點-左/右孩子節點之間的約束,所以從最後一個非葉子節點開始調整。 注意每次交換後,都要對下一層的子堆進行遞

原创 拉格朗日插值查找算法

插值查找是對二分查找的一種改進,適用於均勻分佈的有序表 算法思想 插值查找其實是折半查找的升級版,在我們寫折半查找的時候不知道大家想過沒有爲什麼每次要折一半呢?1/4不行嗎?1/8不行嗎?這樣我們就可以想到,是不是可以找到更精

原创 斐波那契(黃金分割法)查找算法

斐波那契查找算法也叫做黃金分割查找 斐波那契數列 斐波那契數列,該數列公式爲F(K) = F(k-1) + F(k-2),即 1、1、2、3、5、8、13、21……。F(k-1)/f(K)隨着K的遞增,該數越來越接近黃金分

原创 兩路歸併排序

簡介 一般來說,排序算法主要被分爲兩類,即基於比較的算法和基於非比較的算法。插入排序,冒泡排序和希爾排序是基於比較模型的。這三個算法的問題是它們的複雜度都是O(n^2),所以它們非常慢。 那麼有沒有比O(n^2)更快的排序列表的方

原创 什麼是計數排序

有這樣一道排序題:數組中有20個隨機數,取值範圍爲0待10,要求用最快的速度將這20個整數從小到大進行排序。 第一時間你可能會使用快速排序,因爲快速排序的時間複雜度只有O(nlogn)。但是這種方法還是不夠快,有沒有比O(nlog

原创 面試題68 - I. 二叉搜索樹的最近公共祖先

題目來源 面試題68 - I. 二叉搜索樹的最近公共祖先 235. 二叉搜索樹的最近公共祖先 題目描述 題目解析 遞歸 /** * Definition for a binary tree node. * public c

原创 go語言之進階篇方法的重寫

package main import "fmt" type Person struct { name string //名字 sex byte //性別, 字符類型 age int //年齡 }

原创 go語言之進階篇指針類型和普通類型的方法集

用實例value與pointer調用方法(含匿名字段)不受方法集的約束,編譯器總是查找全部方法,並且自動轉換receiver實參 package main import "fmt" type Person struct {

原创 Golang 判斷當前系統是 Linux 還是 Windows

package main import ( "runtime" "fmt" ) func main() { sysType := runtime.GOOS if sysType == 'linux'

原创 go語言之進階篇方法值與方法表達式

方法值 package main import "fmt" type Person struct { name string //名字 sex byte //性別, 字符類型 age in

原创 go語言之進階篇方法的繼承

package main import "fmt" type Person struct { name string //名字 sex byte //性別, 字符類型 age int //年齡 }

原创 StarUML畫類圖時出現Invalid connection (Interface Realization)

問題 今天畫類圖的選擇繼承關係的時候出現的了錯誤Invalid connection (Interface Realization),一直以爲是哪裏出了差錯。後來發現,只是選錯了選項。 解決 選擇連接關係時,不能選擇Classes

原创 4. 尋找兩個正序數組的中位數---這題目沒有解決,待研究

題目來源 LEETCODE 題目解析 中位數: 如果某個有序數組長度是奇數,那麼其中位數就是最中間那個,如果是偶數,那麼就是最中間兩個數字的平均值 合併取中 先將兩個數組合並,兩個有序數組的合併也是歸併排序中的一部分。然後根據