// 排序演算法
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...