1.冒泡排序法
原理:從頭開始比較相鄰的兩個待排序元素励稳,如果前面元素大于后面元素佃乘,就將兩個元素的位置互換。這樣對序列的第0個元素到第n-1個元素進行一次遍歷后驹尼,最大的一個元素就沉到了最后的位置了趣避。排除此次排序最后面的元素,繼續(xù)對剩余序列重復前面兩步新翎,直到待排序元素個數(shù)為0
```
var arr = [3, 4, 1, 2];
function bubbleSort (arr) {
? for (var j = 0; j < arr.length - 1; j++) {
? ? // 這里要根據(jù)外層for循環(huán)的 j程帕,逐漸減少內(nèi)層 for循環(huán)的次數(shù)
? ? for (var i = 0; i < arr.length - 1 - j; i++) {
? ? ? if (arr[i] > arr[i + 1]) {
? ? ? ? var temp = arr[i];
? ? ? ? arr[i] = arr[i + 1];
? ? ? ? arr[i + 1] = temp;
? ? ? }
? ? }
? }
? return arr;
}
bubbleSort(arr);
```
2.快速排序法
原理:從序列中挑出一個元素住练,稱為基準元素,所有比基準小的元素排在基準前面愁拭,所有比基準大的元素排在基準后面讲逛。把重新得到的序列再通過上面的方法排序,當序列長度為1或者0時岭埠,結(jié)束遞歸盏混。
3、選擇排序
**原理:** 首先在待排序序列中找到最小元素惜论,放入存儲有序序列的數(shù)組中许赃,同時從待排序序列中刪除這個元素;繼續(xù)從未排序序列中找到最小元素馆类,然后放入有序序列的數(shù)組中混聊,直到待排序序列為空,返回有序序列蹦掐。
4.插入排序
原理:
1. 從待排序序列第0個元素開始排序技羔,該元素可以認為已經(jīng)是有序的了;
2. 取出下一個元素卧抗,在已經(jīng)排序的元素列表中藤滥,從后向左遍歷;
3. 如果已排序元素大于新元素社裆,將該元素移到下一位置拙绊;
4. 重復步驟3,知道找到一個已排序的元素泳秀,此元素不大于新元素标沪,或者次元素位于有序序列開始位置,將新元素插入到次元素后面
javascript排序
//2.快速排序
function quickSort(array) {
var len=array.length;
if(len<=1) {
returnarray;
}
var base=array[0];
var leftArr=[];
var rightArr=[];
for(vari=1; i
if(array[i]
leftArr.push(array[i]);
}else{
rightArr.push(array[i]);
}
}
return quickSort(leftArr).concat(base, quickSort(rightArr));//遞歸
}
var mm=quickSort([1,3,2,4,5]);//1嗜傅,2金句,3,4吕嘀,5
console.log(mm)
//3.選擇排序法
function selectSort(array) {
var reSort=[];
var len=array.length;
varmin, i;
for(i=0; i
min=Math.min.apply(null,array[i]);//存儲最小的
reSort.push(min);
array.splice(array.indexOf(min),1);
}
returnreSort;
}
var mm=quickSort([1,3,2,4,5]);//1违寞,2,3偶房,4趁曼,5
console.log(mm);
//4.插入排序
function insertSort(array){
var len=array.length;
vari,j;
for(i=1;i
j=i;
var value=array[j];//保存未排序的序列
while(array[j-1]>value){
array[j]=array[j-1];
j--;
if(j===0){
break;
}
}
array[j]=value;
}
return array;
}
var mm=insertSort([1,3,2,4,5]);//1,2棕洋,3挡闰,4,5
console.log(mm);