按從左到右的順序,從下標為1的數開始與前乙個進行比較,小則往前移,大則退出迴圈。
let array =[1
,9,3
,5,2
,3,5
,7,2
];function
arrayinsert
(array)
else}}
return array;
}//輸出
let array1 =
arrayinsert
(array)
;for
(let i =
0; i < array.length; i++
)//結果如預期 1 2 2 3 3 5 5 7 9
將陣列從第乙個開始,與後面相鄰的數比較,如果這個數比後面相鄰的數大,則交換位置。(向上冒泡),這乙個數比較完成之後,最後那個數應該為最大的數。
接著迴圈第二個數,已經排好的不參與迴圈。
直至所有數排好完畢。
考慮當一次迴圈沒有發生冒泡,說明已經排序完成,停止迴圈。
let array =[1
,9,3
,5,2
,3,5
,7,2
];function
bubbleinsert
(array)}if
(target)
}return array;
}//輸出
let array1 =
bubbleinsert
(array)
;for
(let k =
0; k < array.length; k++
)
結果如上。
兩層迴圈,第一次迴圈找出最小那個出賦值給array0,第二次迴圈找出第二小的那個數賦值給array1,依次類推,直至全部排序完畢。
版本一:(錯誤)
let array =[1
,9,3
,5,2
,3,5
,7,2
];function
selectionsort
(array)
console.
log(
"arrayafter"
, array);}
}return array;
}//輸出
let array1 =
selectionsort
(array)
;for
(let k =
0; k < array.length; k++
)
結果:
我們可以看見這是有問題的,**只選擇小的數往前推,並沒有判斷是否比之前的更小。
版本二:(正確)
let array =[1
,9,3
,5,2
,3,5
,7,2
];function
selectionsort
(array)
}//把最小的賦給前頭
let temp;
temp = array[target]
; array[target]
= array[i]
; array[i]
= temp;
console.
log(
"arrayafter"
, array);}
return array;
}//輸出
let array1 =
selectionsort
(array)
;for
(let k =
0; k < array.length; k++
)
選乙個數(一般選第乙個),作為標桿,將比它小的數存在它的左邊,比它打的數存在右邊,再分別左右進行第二次排序,直至全部完成。採用遞迴,分治思想。
方法一:遞迴
let array =[3
,9,1
,5,2
,3,5
,7,2
];function
quicksort
(array)
//陣列長度不為1
const target = array[0]
;const left =
;const right =
;for
(let i =
1; i < array.length; i++
)else
}return
quicksort
(left)
.concat
(target,
quicksort
(right));
}quicksort
(array)
; console.
log(
"array"
,quicksort
(array)
);
這裡踩了乙個坑,將left.push(array[i])寫成了left.push=array[i];這會導致寫不進去。
最終結果如前面結果。
方法二:
l,r分別為最左和最右。
在llet array =[3
,9,1
,5,2
,3,5
,7,2
];function
quicksort
(array, start, end)
const target = array[start]
;let l = start;
let r = end;
while
(l < r)
array[l]
= array[r]
;while
(l < r && array[l]
< target)
array[r]
= array[l];}
array[l]
= target;
quicksort
(array, start, l -1)
;quicksort
(array, l +
1, end)
;return array;
} console.
log(
"array"
,quicksort
(array,0,
8));
前端排序演算法
氣泡排序 從執行時間來看,氣泡排序是最差的乙個,氣泡排序比較任何兩個相鄰的項,如果第乙個比第二個大,則互動位置,元素項向上移動至正確的順序,就像氣泡公升至表面一樣。他的複雜度是o n 2 function bubblesort arr 選擇排序 選擇排序大體是找到陣列中最小的值放在第一位,找到第二小...
前端排序演算法整理
比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。function bubbleso...
前端排序演算法 並歸排序
一.歸併排序 1.演算法描述 1 將陣列劃分成left和right兩部分,分別對left和right迴圈遞迴上述操作直至陣列的長度為1 2 從內到外依次完成陣列的大小的組合合併 2.演算法實現 function mergesort arr function merge left,right else...