js中的氣泡排序,選擇排序,快排, 理解和使用
一;氣泡排序:相鄰兩元素之間兩兩比較,比較出大值進行賦值互換,再依次與相鄰的元素比較,層層遞進 #互換元素位置,相互賦值。
<script type="text/javascript">
var my_num = [1,3,9,0,40]
function num(arr){
for(var i =0; i< arr.length-1;i++){
for(var j = 0;j < arr.length-1;j++){
if(arr[j]>arr[j+1]){
var tmpe = arr[j];
arr[j] = arr[j+1];
arr[j+1]= tmpe;
}
}
}return arr;
}
document.write(num(my_num));
</script>
二,選擇排序,先定義一個元素的最大值與最小值,拿 每個元素與最值比較,取大值放到元素最右端,層 層比較,#互換元素下標位置,再賦值,所以比氣泡排序的效率高,
<script type="text/javascript">
var my_num=[1,3,9,0,40]
function num (arr){
for(var i = 0;i < arr.length-1;i++){
var maxone = i;
for(var j = i;j<arr.length;j++){
if(arr[j]<arr[maxone]){
maxone=j;
var temp = arr[i];
arr[i]=arr[maxone];
arr[maxone]=temp;
}
}
}
return arr;
}
document.write(num(my_num));
</script>
三;快排
大致分三步:
1、找基準(一般是以中間項為基準)
2、遍歷陣列,小於基準的放在left,大於基準的放在right
3、遞迴
function quickSort(arr){ //如果陣列<=1,則直接返回 if(arr.length<=1){return arr;} var pivotIndex=Math.floor(arr.length/2); //找基準,並把基準從原陣列刪除 var pivot=arr.splice(pivotIndex,1)[0]; //定義左右陣列 var left=[]; var right=[]; //比基準小的放在left,比基準大的放在right for(var i=0;i<arr.length;i++){ if(arr[i]<=pivot){ left.push(arr[i]); } else{ right.push(arr[i]); } } //遞迴 return quickSort(left).concat([pivot],quickSort(right)); }