一.插入排序
算法描述:
- 從第一個元素開始器联,該元素可以認(rèn)為已經(jīng)被排序
- 取出下一個元素腰懂,在已經(jīng)排序的元素序列中從后向前掃描
- 如果該元素(已排序)大于新元素,將該元素移到下一位置
- 重復(fù)步驟 3,直到找到已排序的元素小于或者等于新元素的位置
- 將新元素插入到該位置后
- 重復(fù)步驟 2~5
function insertSort(arr){
var temp;
for(var i = 0; i< arr.length; i++){
temp = arr[i];
for(var j = i; j> 0; j--){
if(temp < arr[j-1]){
arr[j] = arr[]j-1]
}else{
arr[j] = temp;
break;
}
}
}
return arr;
}
二.選擇排序
算法描述:直接從待排序數(shù)組中選擇一個最欣⒉丁(或最大)數(shù)字肃续,放入新數(shù)組中黍檩。
編程思路:先假設(shè)第一個元素為最小的,然后通過循環(huán)找出最小元素始锚,然后同第一個元素交換刽酱,接著假設(shè)第二個元素,重復(fù)上述操作即可瞧捌。
function inserSort(arr){
var minIndex,minValue;
for(var i = 0; i<arr.length - 1; i++){
minIndex = i;
minValue = arr[minIndex];
for(var j = i+1; j<arr.length; j++){
if(arr[j] < minValue){
minIndex = j;
minValue = arr[minIndex];
}
}
var temp = arr[i];
arr[i] = minValue;
arr[minIndex] = temp;
}
return arr;
}
三.冒泡排序
算法描述:
- 比較相鄰的元素棵里。如果第一個比第二個大,就交換他們兩個姐呐。
- 對每一對相鄰元素作同樣的工作殿怜,從開始第一對到結(jié)尾的最后一對。在這一點曙砂,最后的元素應(yīng)該會是最大的數(shù)头谜。
- 針對所有的元素重復(fù)以上的步驟,除了最后一個麦轰。
- 持續(xù)每次對越來越少的元素重復(fù)上面的步驟乔夯,直到?jīng)]有任何一對數(shù)字需要比較。
function insertSort(arr){
for(var i = 0; i<arr.length; i++){
for(var j = i; j<arr.length; j++){
if(arr[j] < arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j + 1] = temp;
}
}
}
return arr;
}