氣泡排序:兩兩比較,遍歷一趟會挑出最大的值放在最後。
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輪對比,每輪對比將最後乙個元素進行冒泡 排序 即每輪對比將最後乙個元素排出 每輪中的最大或最小 隨後將泡泡 排出元素 排除,進行下一次迭代對比,直到沒有元素可交換為止。這種方式通過多次迭代陣列來完成操作,不管是平均還是最壞的...