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

2021-09-24 06:58:12 字數 2589 閱讀 1229

// 排序演算法

function

arraylist

() ;

this.tostring = function (item)

//冒泡

this.bubblesort = function

()

}

}

}

function swap(arr, index1, index2)

//改進冒泡,減少內迴圈不必要的比較次數,每一輪最後兩個數下一次沒必要再比較

this.modifedbubblesort = function

()

}

}

} //選擇排序,每輪迴圈選出最小項的索引,將最小項依次排列

this.selection = function

()

}

if(indexmin !== i)

}

}//插入排序,假定第一位已經排好,第二位選擇插入第一位之後還是之前

this.insertionsort = function

()

array[j] = temp; //將之前儲存的最初的值賦給j

}

}

//歸併排序 firefox採用的是歸併排序作為array.prototype.sort()的方法實現,chrome採用的是另

//種方法,歸併排序是一種分治演算法,就是將陣列分割成若干小陣列,直到每個小陣列只有乙個成員,然後將

//小陣列合併成較大陣列

this.mergesort = function

()

function mergesortrec(arr)

var mid = math.floor(length/2);

var left = arr.slice(0, mid);

var right = arr.slice(mid, length);

return merge(mergesortrec(left), mergesortrec(right))

}

function merge(left, right) else

}

while (leftind < left.length)

while (rightind < right.length)

return result;

}

//快速排序,最常用之一,chrome裡的sort實現(變形),也是採用分治的方法

//將陣列劃分成小陣列,但是沒有分割開

this.quicksort = function

()

var quick = function (arr, left, right)

if (index < right)

}

}

var partition = function (arr, left, right)

while (arr[j] > pivot)

// if (i <= j)

}

return i;

}//堆排序 首先,我們從最下面一層向上遍歷,第一次buildheap將每乙個子數中最大的值給父節點

this.heapsort = function

()

}

//先對陣列進行二叉樹的排序,先檢查最左邊子節點,其索引值一定是length的一半(如果二叉樹是滿樹的話)

//比較左右子節點,大的放中間

function buildheap(array)

}

//比較左右子節點,大的放中間,然後遞迴,從最大的索引值向下繼續查詢

function heapify(array, heapsize, i)

if (right < heapsize && array[right] > array[largest])

if (largest !== i)

}//搜尋演算法

// 1.順序演算法 ---- 略,太低效

// 2.二分搜尋,要求資料結構已排序

this.binarysearch = function (item) else

if (element > item) else

}

return -1;

}}複製**

A 搜尋演算法

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

A 搜尋演算法

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

泛型演算法搜尋演算法

使用泛型演算法包含標頭檔案 include 以vector儲存數列為例 四種搜尋演算法 1.find 用於搜尋無序集合中是否存在某值 搜尋範圍由iterator first,last 標出。如果找到目標,find 會返回乙個iterator指向該值,否則返回乙個iterator指向last。2.bi...