選擇排序:
function selectSort(arr) {
for (let i = 0; i < arr.length; i++) {
let min = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
let temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
return arr;
}
插入排序:
function insertSort(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = i - 1; j >= 0; j--) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
希爾排序:
function shellSort(array) {
let len = array.length;
let gap = Math.floor(len / 2);
while (gap > 0) {
for (let i = gap; i < len; i++) {
let current = array[i], preIndex = i - gap;
while (preIndex >= 0 && array[preIndex] > current) {
array[preIndex + gap] = array[preIndex];
preIndex -= gap;
}
array[preIndex + gap] = current;
}
gap = Math.floor(gap / 2);
}
return array;
}
快速排序:
function quickSort(array, left, right) {
if (left < right) {
let i = left, j = right, mainNum = array[left];
while (i < j) {
while (i < j && array[j] > mainNum)
j--;
i < j ? array[i++] = array[j] : undefined;
while (i < j && array[i] < mainNum)
i++;
i < j ? array[j--] = array[i] : undefined;
}
array[i] = mainNum;
quickSort(array, left, i - 1);
quickSort(array, i + 1, right);
}
}
歸并排序:
function MergeSort(array) {
if (array.length < 2) {
return array;
}
let mid = Math.floor(array.length / 2);
let left = array.slice(0, mid);
let right = array.slice(mid, array.length);
return merge(MergeSort(left), MergeSort(right))
}
function merge(left, right) {
let res = [], i = 0, j = 0;
while (i < left.length && j < right.length) {
left[i] < right[j] ? res.push(left[i++]) : res.push(right[j++]);
}
while (i < left.length)
res.push(left[i++]);
while (j < right.length)
res.push(right[j++])
return res;
}
二分查找:
function binarySearch(arr, target) {
let left = 0, right = arr.length, mid;
while(left <= right) {
mid = Math.floor((left + right) / 2);
if(arr[mid] > target) {
right = mid - 1;
} else if(arr[mid] < target) {
left = mid + 1;
} else {
return mid;
}
}
return -1;
}
JS-經(jīng)典排序算法
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 選擇排序 對(duì)于任何輸入,時(shí)間為O(n*n); 冒泡排序 最優(yōu)(對(duì)于升序的數(shù)組,因?yàn)榧尤肓艘粋€(gè)跳出判斷):O(n),...
- 冒泡排序 ??大的下沉,小的上浮。??每次循環(huán)都從頭(0)開(kāi)始比較到(attr.length-循環(huán)次數(shù))位置,每次...
- 1.《我和我想成為的人的對(duì)話》你是誰(shuí)?我是你!那我是誰(shuí)?你不是我!所以我是誰(shuí)?你是你自己! 2.《棒點(diǎn)子是哪個(gè)》我...
- 近日重溫瓊瑤的小說(shuō),愈發(fā)想做一粒沙。與風(fēng)起舞,飄蕩天涯。自由自在,隨歲月流轉(zhuǎn),亙古相伴。 一、愛(ài)你是風(fēng)與沙的纏繞 ...
- ?幸福的種子?這本書(shū)還未讀到一半,就已經(jīng)感覺(jué)到能及時(shí)讀到一本具有指導(dǎo)意義的書(shū)是多么重要,作家漪然創(chuàng)辦公益小書(shū)房這件...