JS之排序演算法

2022-08-02 14:45:13 字數 1276 閱讀 1838

在平時的工作中呢也用不到太多的演算法,但是私認為演算法還是挺鍛鍊乙個程式設計師的邏輯思維的,寫一下會的幾種演算法吧

氣泡排序:

function bubblesort(arr)

}console.log(arr);

}return arr

}var num = [1,2,1,3,7,4,9,0];

console.log(bubblesort(num));

解析一下:

·第一遍外迴圈i=0時,j也是0,j·第二遍外迴圈i=1時,j還是0,j·後面就是同上類推了,理解一下的話,就是冒泡一樣,把最大的一遍一遍的冒泡到陣列的末尾,退出整個函式的時候呢,整個陣列就排好順序了

快速排序:

function quicksort(arr)

var index = math.floor(arr.length/2);

var middle = arr.splice(index,1);

var left = ;

var right = ;

for(var i=0;i解析:

·首先判斷陣列長度是否小於等於1,是的話直接return回去

·splice取出陣列的中位數middle,整個陣列裡面沒有middle這個數了哦

·新建兩個left和right陣列

·遍歷整個陣列,判斷arr[i]是小於還是大於中位數middle,小於的push到left這個陣列,大於的push到right這個陣列裡

·最後一句,將left和right兩個陣列當做引數遞迴呼叫quicksort函式。並且呢用concat連線起來,別忘了還有個中位數哦

·之後的遞迴就是回到第一步重複呼叫了,當left或者right陣列長度為1時,就是排好順序啦

整個快速排序演算法的邏輯就是把陣列對半,小的放左邊,大的放右邊,然後再把左右兩邊繼續對半分,小的放左邊,大的放右邊,不斷如此··········

拿寫的aaa陣列來說,中位數是7,那麼left就是[1,3,2,1,5,2],right就是[9],然後遞迴left,還是很好理解的吧

最後是js的array物件的sort方法排序,我也不知叫什麼名-。-

function arraysort(){

var tag = ;

for(var i= 0;i解析:

·sort方法傳入兩個引數compare1,compare2,兩兩進行比較,如果compare1-compare2小於0呢,兩兩之間就不換位置,反之就調換位置

·當然可以這樣寫 return compare2 - compare1,這樣呢就是倒序排列了

JS排序演算法之快速排序

快速排序和歸併排序都是採用二分法的排序演算法。都是 olog n 不過快速排序更複雜一些。快遞排序跟歸併排序的區別是順序,它是先總後分。不斷地從斷點分,讓左邊的數都小於斷點,右邊都大於斷點。然後迭代切分。1 var group 1,9,3,5,0,4,2,8 23 function swap k,y...

JS排序演算法之氣泡排序

氣泡排序是最簡單,也是耗時最久的排序。總而言之 將每乙個數字相互比較,然後將較大的數字和較小的數字交換位置,直到最大的數字冒泡出來。1 var group 1,9,3,5,0,4 23 function bubblesort1 list 9 10 11return list 12 1314 改進後 ...

JS排序演算法之希爾演算法

希爾演算法 希爾演算法在原理上也是一種插入排序,在了解希爾演算法之前,必須了解插入排序 原理 希爾排序在插入排序的基礎上,將資料進行了分組,將原有的資料分為若干個子集,然後對每個子集進行排序,依次類推,不停地分割成子集,直到最後完全排序。數列 3,5,2,4,7,6,8,9,1 先將整個數列以gap...