思想:
比較相鄰的兩個元素的大小,順序如果相反的話則進行交換,這樣的話每次迴圈都可以將最小的或者最大的元素放到後面,最終達到排序的效果(可公升序可降序)
**實現
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 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要...