js的幾種常見的演算法排序總結

2021-10-19 22:48:10 字數 2075 閱讀 7365

思想:

比較相鄰的兩個元素的大小,順序如果相反的話則進行交換,這樣的話每次迴圈都可以將最小的或者最大的元素放到後面,最終達到排序的效果(可公升序可降序)

**實現

var array =[3

,4,1

,5,2

,45,1

,23]function

bubblesort

(arr)}}

return arr

}console.

log(

bubblesort

(array)

)

優化方法:

如果在進行某一次迴圈時,內部元素沒有發生交換,則說明排序已經完成,沒有必要再進行後面的操作,直接可以終止迴圈。

思想從未排序的序列中找到最大或者最小的元素,放到元素的未排序的頭部,重複後達到排序的目的

**實現

var array =[3

,4,1

,5,2

,45,1

,23]function

choosesort

(arr)}if

(index !== i)

}return arr

}console.

log(

choosesort

(array)

)

思想

抽取的第乙個元素開始,第乙個元素預設已經排好序,下乙個元素開始和第乙個元素進行比較,如果小於第乙個元素 則掃瞄這個元素的前面所有元素進行換位放到前面,依次類推,最終達成排序。

**實現

function

insertsort

(arr)

arr[j]

= change

}return arr

}console.

log(

insertsort

(array)

)

思想

將陣列從中間拆分成乙個個小的陣列,直到拆分到陣列的元素為乙個為止,然後將拆分後的陣列按照陣列有序陣列的過程進行排序,直到合成乙個新的陣列

**實現

function

mergesort

(arr)

function

merge

(leftarr, rightarr)

else

}// 如果是左邊陣列還有剩餘,則把剩餘的元素全部加入到結果陣列中。

while

(leftindex < leftarr.length)

while

(rightindex < rightarr.length)

return result

}console.

log(

mergesort

(array)

)

思想

找到乙個基準值,與他比較,比他小的放左邊,大的放右邊,再遞迴比較,最後得出結果。

**實現

var arr2 =[3

,6,1

,45,1

,4,23

]function

quicksort

(arr)

var midindex =

parseint

(arr.length/2)

, left =

, right =

// 取出中間元素

var miditem = arr.

splice

(midindex,1)

[0];

for(

var i=

0;i)else

}// 最後返回鏈結左邊部分陣列 基準值 和右邊陣列組合的陣列

return

quicksort

(left)

.concat

([miditem]

,quicksort

(right))}

console.

log(

quicksort

(arr2)

)

js常見的幾種排序演算法

最近自己總結了js常見的幾種排序演算法,並進行了簡單的測試和對比。包括 氣泡排序,插入排序,選擇排序,快速排序,歸併排序等。氣泡排序比較簡單,就是從前往後依次比較相鄰的兩個值,如果前乙個大於後乙個值就交換位置,一趟之後最大的值就排在最後一位了,然後同理在排序剩下的n 1 n 2 個數 如下 func...

幾種常見的排序演算法總結

所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。排序演算法,就是如何使得記錄按照要求排列的方法。排序演算法在很多領域得到相當地重視,尤其是在大量資料的處理方面。乙個優秀的演算法可以節省大量的資源。在各個領域中考慮到資料的各種限制和規範,要得到乙個符合實際的優秀...

幾種常見的排序演算法

氣泡排序演算法的運作如下 1 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。3 針對所有的元素重複以上的步驟,除了最後乙個。4 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要...