最近面試可能會問這些
1,插入排序
functionsort(elements);
return
res;
}function
one(arr,x);
arr[i]=x;
temp = true
;
break
; }
}; !temp&&arr.push(x);
return
arr;
}
簡單來說就是插入乙個數,在結果裡找他插入的位置。位置怎麼找呢,比如我要插入乙個值,看一下哪個值比它大,那就插入到這個比他大的值的前面。遍歷一下陣列,往後諾位置。
2.氣泡排序
functionsort(arr)
} }}
3.快速排序
元素交換快排,但是用swap多宣告了乙個臨時變數tmp。
function quicksort(arr, left = 0, right = arr.length - 1)else
}if (arr[i] >privot)
else
return
arr;
}function
swap(arr, i, j)
var arr = [4, 13, 27, 38, 49, 49, 65, 55, 97, 76]
console.log(quicksort(arr));
下面這個是經典快拍,交換元素,空間複雜度最低。
functionquicksort(arr, left=0, right=arr.length)
arr[i]=privot;
quicksort(arr, left, i);
quicksort(arr, i+1, right);
return arr;
}
const qsort = arr => arr.length <= 1? arr:qsort(arr.filter(x => x < arr[0]))
.concat(arr.filter(x => x == arr[0]))
.concat(qsort(arr.filter(x => x > arr[0])))
以下是阮一峰版,比較好理解,但是splice已是o(n)的複雜度
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));
};
4希爾排序
functionshellsort(arr)
while(h>=1)
}h=(h-1)/3;} }
function swap(array, i, j)
5.歸併排序
functionmerge(left, right)
else}/*
當左右陣列長度不等.將比較完後剩下的陣列項鏈結起來即可
*/return
re.concat(left).concat(right);}
function
mergesort(array)
mergesort(a);
JS常見的排序演算法
先簡單的來了解一下何謂演算法。在電腦科學與數學中,乙個排序演算法 英語 sorting algorithm 是一種能將一串資料依照特定排序方式進行排列的一種演算法 最常用到的排序方式是數值順序以及字典順序。有效的排序演算法在一些演算法 例如搜尋演算法與合併演算法 中是重要的,如此這些演算法才能得到正...
JS常見的排序演算法
前言 這裡是修真院前端小課堂,每篇分享文從 八個方面深度解析前端知識 技能,本篇分享的是 js常見的排序演算法 今天給大家分享一下,修真院官網js任務4,深度思考中的知識點 js常見的排序演算法 一 背景介紹 演算法 algorithm 是指解題方 而完整的描述,是一系列解決問題的清晰指令,演算法代...
js常見的排序演算法
冒泡演算法算是排序裡面比較基礎的一種演算法。它的實現原理為 從第乙個元素開始,將它與下乙個索引元素比較。如果當前元素的值比下乙個元素的值要大,則兩者交換位置,否則位置不變。接下來,索引往後移一位,繼續比較接下來兩個數的值。一直重複上面的操作,直到比較到最後乙個元素,因為大的元素位置會交換位置向後移,...