一、氣泡排序
思路:1. 依次比較相鄰的兩個數,如果第乙個比第二個小,則位置不變,如果第乙個比第二個大,則位置調換,
一輪下來,最後乙個是最大的數
2.對除了最後乙個之外的數重複第一步,直到只剩乙個數
// 氣泡排序
var arr = [1,5,3,9,4];
for(var i = arr.length-1; i>0; i--)
}console.log(arr); }
二、選擇排序
思路:1.找出最小的數,和第乙個交換位置
2.在剩下的位置中,找出第二小的數,放在第二個
3.依次類推
//選擇排序
var arr2 = arr;
for(var i = 0; i
for(var j =i; j
var max = 0;
if(arr2[i]>arr2[j])
}console.log("選擇排序:"+arr2) }
三、插入排序
思路:1.把陣列分為【已排序】和【未排序】兩部分,第乙個數為【已排序】,其餘為【未排序】
2.從【未排序】抽出第乙個數,和【已排序】部分進行比較,插入到合適的位置
//插入排序
var arr3 = [8,12,1,5,3,9,4];
for(var i = 0; ifor(var j = i; j > 0; j--) }
console.log("插入排序:"+arr3); }
四、合併排序
思路:1.不斷將陣列對半分,知道每乙個陣列只有乙個
2.將分出來的部分重新合併
3.合併的時候按順序排列
五、快速排序
思路:1.以乙個數為基準,比這個數小的放在左邊,比這個數大的放在右邊
2.再按此方法對著兩部分資料分別進行快速排序
關於以上演算法的時間複雜度和空間複雜度
排序法最差時間分析
平均時間複雜度
穩定度空間複雜度
氣泡排序
o(n2)
o(n2)
穩定o(1)
快速排序
o(n2)
o(n*log2n)
不穩定o(log2n)~o(n)
選擇排序
o(n2)
o(n2)
穩定o(1)
二叉樹排序
o(n2)
o(n*log2n)
不穩定o(n)
插入排序
o(n2)
o(n2)
穩定o(1)
堆排序o(n*log2n)
o(n*log2n)
不穩定o(1)
希爾排序oo
不穩定o(1)
JavaScript排序演算法
從前到後兩兩比較,把較大的換到後面,直到最後。function bubblesort arr return arr 在未排序佇列中找到最小或最大元素,和第一位數交換。然後找剩下的未排序的最小或最大元素和第二位數交換 function selectionsort arr temp arr i arr ...
javascript排序 查詢演算法大全
在pptv的實習結束了,忙著找工作的事,順便把資料結構的那本書重新複習了一遍。為了加深印象,特意把裡面的常用的排序 查詢演算法用js寫了一遍 具體的例項在我的github上,大家可以訪問的 js sort.html檔案 js插入排序 function insertsort arr else retu...
經典演算法 快速排序 javascript
1.在資料集之中,找乙個基準點 2.建立兩個陣列,分別儲存左邊和右邊的陣列 3.利用遞迴進行下次比較 方式一 array.prototype.quick sort function 方式二 var quicksort2 function array else return false 使用時也可以直...