排序演算法(js實現)

2021-10-02 17:53:32 字數 1867 閱讀 9389

氣泡排序:兩兩比較,遍歷一趟會挑出最大的值放在最後。

function bubblesort(arr) 

} }return arr;

}

選擇排序:從頭至尾掃瞄序列,每次找出最小的乙個元素,和第乙個元素交換,接著從剩下的元素中繼續這種選擇和交換方式,最終得到乙個有序序列。

function selectsort(arr) 

} tmp = arr[minindex];

arr[minindex] = arr[i];

arr[i] = tmp;

} return arr;

}

插入排序:將陣列的第乙個數認為是有序陣列,從後往前掃瞄該有序陣列,把陣列中其餘n-1個數,根據數值的大小,插入到有序陣列中,直至陣列中的所有數有序排列為止。這樣的話,n個元素需要進行n-1趟排序!!

function insertionsort(arr) 

arr[preindex+1] = current;

} return arr;

}

歸併排序: 該演算法是採用分治法。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。歸併排序是一種穩定的排序方法。

function mergesort(arr) 

var middle = math.floor(len / 2),

left = arr.slice(0, middle),

right = arr.slice(middle);

return merge(mergesort(left), mergesort(right));

}function merge(left, right) else

} if(left.length)

if(right.length)

return result;

}

快速排序:

①先從隊尾開始向前掃瞄且當left < right 時,如果arr[right] > pivot ,則right–,但如果arr[right] < pivot,則將right的值賦值給left,同時要轉換陣列掃瞄的方式,即需要從隊首開始向隊尾進行掃瞄了

②同理,當從隊首開始向隊尾進行掃瞄時,如果arr[right] < pivot,則left++,但如,即arr[low] = arr[high],同時將陣列掃瞄方式換為由隊尾向隊首進行掃瞄.

③重複①和②,直到 left>=right時(其實是left=right),left或right的位置就是該哨兵在陣列中的正確索引位置。

function quicksort(arr, left, right) 

}function partition(arr, left, right)

arr[left] = arr[right];

while (left < right && arr[left] <= pivot)

arr[right] = arr[left];

} arr[left] = pivot;

return left;

}var arr = [2, 10, 4, 1, 0, 9, 5, 2];

console.log(quicksort(arr, 0, arr.length - 1));

希爾排序:插入排序的一種更高效的實現。

function shellsort(arr) 

arr[j+gap] = val;

}} return arr;

}

排序演算法 JS實現

原文引用自這裡,這裡只是我自己的學習的補充以及筆記 時間複雜度,o n2 var arr 5,6,3,1,8,7,2,4 function insertsort arr else return arr console.log insertsort arr 時間複雜度,o n2 var arr 5,1...

JS實現排序演算法

目錄 一 氣泡排序 方法名 sortarr 功能介紹 對陣列進行排序 冒泡演算法 arguments arr 必輸項 需要排序的陣列 action 非必輸項 up 公升序,down 降序 預設 let sortarr function arr,action 空陣列或者陣列1個元素,不需要排序直接跳出...

js實現排序演算法

系統整理一下排序演算法。氣泡排序實質是小 大 的元素往前 後 調。進行n 1輪對比,每輪對比將最後乙個元素進行冒泡 排序 即每輪對比將最後乙個元素排出 每輪中的最大或最小 隨後將泡泡 排出元素 排除,進行下一次迭代對比,直到沒有元素可交換為止。這種方式通過多次迭代陣列來完成操作,不管是平均還是最壞的...