色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

什么是基本算法步驟

李中冰2年前22瀏覽0評論

什么是基本算法步驟?

堆排序(Heapsort)是指利用堆這種數據結構所設計的一種排序算法。堆積是一個近似完全二叉樹的結構,并同時滿足堆積的性質:即子結點的鍵值或索引總是小于(或者大于)它的父節點。算法步驟如下:

堆排序算法

1. 創建一個堆H[0..n-1];

2. 把堆首(最大值)和堆尾互換;

3. 把堆的尺寸縮小1,并調用shift_down(0),目的是把新的數組頂端數據調整到相應位置;

4.重復步驟2,直到堆的尺寸為1。

堆排序的平均時間復雜度為Ο(nlogn) 。

歸并排序

歸并排序(Mergesort),又稱合并排序,是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(DivideandConquer)的一個非常典型的應用。算法步驟如下:

歸并排序

1.申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合并后的序列;

2.設定兩個指針,最初位置分別為兩個已經排序序列的起始位置;

3.比較兩個指針所指向的元素,選擇相對小的元素放入到合并空間,并移動指針到下一位置;

4.重復步驟3直到某一指針達到序列尾;

5.將另一序列剩下的所有元素直接復制到合并序列尾。

歸并排序的平均時間復雜度為Ο(nlogn) 。

二分查找算法

二分查找算法,也稱二分搜索,是一種在有序數組中查找某一特定元素的搜索算法。算法步驟如下:

二分查找算法

1. 搜索過程從數組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結束;

2. 如果某一特定元素大于或者小于中間元素,則在數組大于或小于中間元素的那一半中查找返回步驟1;

3. 如果在某一步驟數組為空,則代表找不到。

這種搜索算法每一次比較都使搜索范圍縮小一半。折半搜索每次把搜索區域減少一半,二分查找算法的時間復雜度為Ο(logn) 。

BFPRT(線性查找算法)

BFPRT算法又稱中位數的中位數算法,由Blum、Floyd、Pratt、Rivest、Tarj提出,并以他們的名字命名。該算法的思想與快速排序思想相似,通過修改快速選擇算法的主元選取方法,提高算法在最壞情況下的時間復雜度,適用于解決為從某n個元素的序列中選出第k大(第k小)的元素的問題。具體算法步驟如下:

1.將n個元素每5個一組,分成n/5(上界)組。

2.取出每一組的中位數,任意排序方法,比如插入排序。

3.遞歸的調用selection算法查找上一步中所有中位數的中位數,設為x,偶數個中位數的情況下設定為選取中間小的一個。

4.用x來分割數組,設小于等于x的個數為k,大于x的個數即為n-k。

5.若i==k,返回x;若ik,在大于x的元素中遞歸查找第i-k小的元素。

終止條件是:n=1時,返回的即是i小元素。

BFPRT可以保證在最壞情況下仍為線性時間復雜度。該算法在最壞情況下,依然能達到o(n)的時間復雜度。

DFS(深度優先搜索)

深度優先搜索算法(Depth-First-Search),是搜索算法的一種。它的基本思想是沿著樹的深度遍歷樹的節點,盡可能深的搜索樹的分支。當節點v的所有邊都己被探尋過,搜索將回溯到發現節點v的那條邊的起始節點。這一過程一直進行到已發現從源節點可達的所有節點為止。如果還存在未被發現的節點,則選擇其中一個作為源節點并重復以上過程,整個進程反復進行直到所有節點都被訪問為止。算法步驟如下:

DFS(深度優先搜索)

1.訪問頂點v;

2.依次從v的未被訪問的鄰接點出發,對圖進行深度優先遍歷;直至圖中和v有路徑相通的頂點都被訪問;

3.若此時圖中尚有頂點未被訪問,則從一個未被訪問的頂點出發,重新進行深度優先遍歷,直到圖中所有頂點均被訪問過為止。

深度優先搜索屬于盲目搜索,是圖論中的經典算法,利用深度優先搜索算法可以產生目標圖的相應拓撲排序表,利用拓撲排序表可以方便的解決很多相關的圖論問題,如最大路徑問題等等。一般用堆數據結構來輔助實現DFS算法。

BFS(廣度優先搜索)

廣度優先搜索算法(Breadth-First-Search),是一種圖形搜索算法。它的基本思想是從根節點開始,沿著樹的寬度遍歷樹的節點。如果所有節點均被訪問,則算法中止。算法步驟如下:

BFS(廣度優先搜索)

1.首先將根節點放入隊列中。

2.從隊列中取出第一個節點,并檢驗它是否為目標。如果找到目標,則結束搜尋并回傳結果;否則將它所有尚未檢驗過的直接子節點加入隊列中。

java 隊列遍歷方法,什么是基本算法步驟