(一)快速排序演算法
1.1: 先從數列中取出乙個數作為「基準」。
1.2: 分割槽過程:將比這個「基準」大的數全放到「基準」的右邊,小於或等於「基準」的數全放到「基準」的左邊。
1.3: 再對左右區間重複第二步,直到各區間只有乙個數。
**實現:
var quicksort = function(arr)var pivotindex = math.floor(arr.length / 2); //基準位置(理論上可任意選取)
var pivot = arr.splice(pivotindex, 1)[0]; //基準數
var left = ;
var right = ;
for (var i = 0; i < arr.length; i ) else
}return quicksort(left).concat([pivot], quicksort(right)); //鏈結左陣列、基準數構成的陣列、右陣列
};
(二)希爾排序,也稱遞減增量排序演算法
1.1: 選擇乙個增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;
1.2: 按增量序列個數 k,對序列進行 k 趟排序;
1.3: 每趟排序,根據對應的增量 ti,將待排序列分割成若干長度為 m 的子串行,分別對各子表進行直接插入排序。僅增量因子為 1 時,整個序列作為乙個表來處理,表長度即為整個序列的長度。
**實現:
function shellsort(arr)for (gap; gap > 0; gap = math.floor(gap/3))
arr[j+gap] = temp;}}
return arr;
}
(三)選擇排序演算法
1.1: 選擇乙個增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;
1.2: 從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。
1.3: 重複第二步,直到所有元素均排序完畢。
**實現:
function selectionsort(arr)}temp = arr[i];
arr[i] = arr[minindex];
arr[minindex] = temp;
}return arr;
}
(四)歸併排序演算法
1.1: 歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法(divide and conquer)的乙個典型的應用。 合併排序法是將兩個(或兩個以上)有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。 將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為2-路歸併。
**實現:
function merge(leftarr, rightarr)return result.concat(leftarr).concat(rightarr); //剩下的就是合併,這樣就排好序了
} function mergesort(array)
var arr = mergesort([32,12,56,78,76,45,36]);
console.log(arr); // [12, 32, 36, 45, 56, 76, 78]
(五)氣泡排序演算法
1.1: 先從數列中取出乙個數作為「基準」。
1.2: 第一輪的時候最後乙個元素應該是最大的乙個。
1.3: 按照步驟一的方法進行相鄰兩個元素的比較,這個時候由於最後乙個元素已經是最大的了,所以最後乙個元素不用比較。
**實現:
function sortarr(arr)}}return arr;
}
(六)插入排序演算法
1.1: 從第乙個元素開始,該元素可以認為已經被排序;
1.2: 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄,如果該元素(已排序)大於新元素,將該元素移到下一位置;
1.3: 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置,將新元素插入到該位置後;
1.4: 重複步驟2~5。
**實現:
function insertsort(arr)arr[j + 1] = key;
}return arr;
}
(七)二分插入排序演算法
1.1: 從第乙個元素開始,該元素可以認為已經被排序;
1.2: 取出下乙個元素,在已經排序的元素序列中二分查詢到第乙個比它大的數的位置;
1.3: 將新元素插入到該位置後;
1.4: 重複上述兩步;
**實現:
function insertsort(arr)arr[j + 1] = key;
}return arr;
}
JS中常見的演算法
常見演算法 1累加 累積 累加 將一系列的資料加到乙個變數裡面。最後的達到累加的結果 比如 將1到 100的數求累加和。小球從高處落下,每次返回到原來的一半,求第十次小球落地時小球走過的路程。var h 100 var s 0 for var i 0 i 10 i s s 2 100 累積 將一系列...
JS常見的排序演算法
先簡單的來了解一下何謂演算法。在電腦科學與數學中,乙個排序演算法 英語 sorting algorithm 是一種能將一串資料依照特定排序方式進行排列的一種演算法 最常用到的排序方式是數值順序以及字典順序。有效的排序演算法在一些演算法 例如搜尋演算法與合併演算法 中是重要的,如此這些演算法才能得到正...
JS常見的排序演算法
前言 這裡是修真院前端小課堂,每篇分享文從 八個方面深度解析前端知識 技能,本篇分享的是 js常見的排序演算法 今天給大家分享一下,修真院官網js任務4,深度思考中的知識點 js常見的排序演算法 一 背景介紹 演算法 algorithm 是指解題方 而完整的描述,是一系列解決問題的清晰指令,演算法代...