針對(duì)排序算法總結(jié)整理如下:
1.冒泡排序
1)一列數(shù)組仅仆,從元素第一個(gè)位置 0 開(kāi)始比較相鄰 i+1位置的元素,如果大于它谨垃,那么交換位置启搂,起始位置i++,繼續(xù)比較到i+1的元素硼控。重復(fù)進(jìn)行直到 i+1 == 數(shù)組長(zhǎng)度 時(shí)結(jié)束循環(huán)。現(xiàn)在最后一個(gè)元素為最大值胳赌。(內(nèi)層循環(huán) 目標(biāo):找到最大)
2)len-1牢撼,刨去最后一個(gè)元素即當(dāng)前最大元素,繼續(xù)從i = 0 開(kāi)始 重復(fù)執(zhí)行(1)步 直到 len = 0時(shí) 結(jié)束循環(huán)(外層循環(huán) 目標(biāo):重復(fù)找到第二個(gè)疑苫、第三個(gè)...最大元素)
function bubbleSort(arr) {
var len = arr.length, i = 0,temp;
while(--len) {
while (i < len) {
if(arr[i] > arr[i+1]) {
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
i++;
}
i = 0;
}
return arr;
}
2.選擇排序
1)從第0個(gè)元素開(kāi)始初始假設(shè)第一個(gè)最小元素索引為0熏版, 從i+1個(gè)元素開(kāi)始循環(huán)到len直到找到更小的數(shù)則交換索引,否則保持不變捍掺, (內(nèi)層循環(huán) 目標(biāo):找到最小的數(shù)的索引)
2)如果初始設(shè)定的索引不是最小數(shù)那么交換元素
3)從i+1開(kāi)始直到 <len-1 重復(fù)進(jìn)行(1)撼短、(2)
function selectSort(arr) {
var len = arr.length,min, temp;
for ( var i = 0; i < len - 1; i++ ) {
min= i;
for ( var j = i + 1; j < len; j++ ) {
if ( arr[j] < arr[min] ) { //找到更小的數(shù)
min= j; //保存當(dāng)前最小的索引
}
}
if( i != min ){//如果不是當(dāng)前最小則交換
temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
return arr;
}
3.插入排序
1)假定第0個(gè)元素為排序好的有序隊(duì)列,從第1個(gè)元素開(kāi)始挺勿,向當(dāng)前有序隊(duì)列從后向前一一比較曲横,直到有一個(gè)元素大于它則將該元素前移
function insertSort(arr){
var len = arr.length;
for (var i = 1; i < len; i++) {
var temp= arr[i];
var j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
return arr;
}