高階演算法之「搜尋演算法」

2022-09-19 16:45:11 字數 2097 閱讀 8419

1.1 js中的排序和搜尋

1.2 排序演算法

1.3 搜尋演算法2.1 氣泡排序

2.2.1 思路

2.2.2 動畫演示

氣泡排序動畫演示

2.2.3 coding part

array.prototype.bubblesort = function () 

}}}

2.2.4 時間複雜度

2.2 選擇排序

2.2.1 思路

2.2.2 動畫演示

選擇排序動畫演示

2.2.3 coding part

array.prototype.selectionsort = function () 

}if(indexmin !== i)

}}

2.2.4 時間複雜度

2.3 插入排序

2.3.1 思路

2.3.2 動畫演示

插入排序動畫演示

2.3.3 coding part

array.prototype.insertionsort = function ()  else 

j--}

this[j] = temp

}}

2.3.4 時間複雜度

2.4 歸併排序

2.4.1 思路

合併兩個有序陣列

2.4.2 動畫演示

歸併排序動畫演示

2.4.3 coding part

array.prototype.mergesort = function ()  else if(orderleft.length)  else if(orderright.length) 

}return res

} const res = rec(this)

res.foreach((n, i) => this[i] = n)

}

2.4.4 時間複雜度

2.5 快速排序

2.5.1 思路

2.5.2 動畫演示

快速排序動畫演示

2.5.3 coding part

array.prototype.quicksort = function ()  else 

}return [...rec(left), mid, ...rec(right)]

} const res = rec(this)

res.foreach((n, i) => this[i] = n)

}

2.5.4 時間複雜度3.1 順序搜尋

3.1.1 思路

3.1.2 coding part

array.prototype.sequentialsearch = function(item) 

} return -1

}

3.1.3 時間複雜度

3.2 二分搜尋

前提:陣列有序

3.2.1 思路

3.2.2 coding part

array.prototype.binarysearch = function(item)  else if(element > item)  else 

} return -1

}

3.2.3 時間複雜度1.1 題目描述

1.2 解題思路

1.3 解題步驟

function mergetwolists(l1, l2)  else 

p = p.next;

} if(p1)

if(p2)

return res.next

}

1.4 時間複雜度&空間複雜度2.1 題目描述

2.2 解題思路

輸入:n = 10, pick = 6

輸出:6

2.3 解題步驟
function guessnumber(n)  else if(res === 1)  else if(res === -1) 

}}

2.4 時間複雜度&空間複雜度

A 搜尋演算法

啟發式搜尋演算法 要理解 a 搜尋演算法,還得從啟發式搜尋演算法開始談起。所謂啟發式搜尋,就在於當前搜尋結點往下選擇下一步結點時,可以通過乙個啟發函式 來進行選擇,選擇代價最少的結點作為下一步搜尋結點而跳轉其上 遇到有乙個以上代價最 少的結點,不妨選距離當前搜尋點最近一次展開的搜尋點進行下一步搜尋 ...

A 搜尋演算法

a 演算法是基於bfs的一種入門級啟發式搜尋演算法,就是將bfs的佇列改為基於估價的優先佇列,可以快速地找到答案。優先隊列為小根堆 while 優先佇列不為空 取出隊頭並擴充套件 將擴充套件節點以估價值 當前值為優先順序入隊 endwhile估價函式越接近真實值演算法越優,但一定不能大於真實值,否則...

演算法 排序演算法 搜尋演算法

排序演算法 function arraylist this.tostring function item 冒泡 this.bubblesort function function swap arr,index1,index2 改進冒泡,減少內迴圈不必要的比較次數,每一輪最後兩個數下一次沒必要再比較 ...