常見的js演算法

2022-07-03 08:51:09 字數 2541 閱讀 4234

(一)快速排序演算法

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 是指解題方 而完整的描述,是一系列解決問題的清晰指令,演算法代...