排序演算法是基礎演算法,雖然關鍵在於演算法的思想而不是語言,但還是決定借助演算法視覺化工具結合自己常用的語言實現一下
1.氣泡排序
基本思路:依次比較兩兩相鄰的兩個數,前面數比後面數小,不變。前面數比後面數大,交換順序。一輪下來,最後的乙個數是最大的數。
外迴圈每增加一次,內迴圈減少一次。
圖形展示:
function2.選擇排序bubblesort(arr)
} }
return
arr;
}
基本思路:迴圈陣列,找出最小的值,和第乙個交換位置;然後在剩下的數中,找出第二小的數,放在第二個;依次類推。
圖形展示:
function3.插入排序selectsort(arr)
if(i!=min)
}}
return
arr;
}
基本思路:把陣列分為[已排序]和[未排序]兩部分,第乙個數為[已排序],其餘為[未排序];
從[未排序]中抽出乙個數,和[已排序]部分比較,插入到合適位置。
圖形展示:
function4、合併排序insert(arr)
arr[j+1]=value;
}return
arr;
}
基本思路:不斷的將陣列對半分,只到每個陣列只有乙個元素;
將分出來的部分重新合併,合併的時候按順序排列。
圖形展示:
方法一
function方法二mergesort(arr)
var middle=math.floor(arr.length/2),
left=arr.slice(0,middle),
right=arr.slice(middle);
return
merge(mergesort(left),mergesort(right));
}function
merge(left,right)
else
} //while(left.length)
//while(right.length)
if(left.length)
if(right.length)
return
result;
}
function5.快速排序mergesort(arr)
//遞迴
var middle=math.floor(arr.length/2),
left=arr.slice(0,middle),
right=arr.slice(middle);
return
merge(mergesort(left),mergesort(right)) }//
將兩個陣列合併;合併的時候按從小到大的順序
function
merge(left,right)
else
}return result.concat(left.slice(left_index),right.slice(right_index));
基本思路:以乙個數為基準,比基準小的數放到左邊,比基準大的值放右邊;遞迴進行,不能再分後退出遞迴
圖形展示:
方法一:以中間值為基準,這種方法建立了兩個新陣列,暫用空間
function方法二,以第乙個值為基準,先向從右往左,找比它小的值;再從左向右找比它大的值quicksort(arr)
var base=math.floor(arr.length/2);
var pirot=arr.splice(base,1)[0]; //
基準值var left=,
right=;
for(var i=0;i)
else
}//遞迴,把陣列合併在一起把陣列合併在一起
return
quicksort(left).concat([pirot],quicksort(right));
}
var quicksort = function(arr, head, tail)
var i=head;
var j=tail;
var pivot=arr[i]; /*
*< 選取基準值
*/while (i
//交換位置
if (i
//使用i,從序列最左端開始掃瞄,直到遇到比基準值大的數
while ( (i=arr[i]) )
//交換位置
if (i
}//最後填入基準值放入合適的位置
arr[j]=pivot;
//對基準值兩邊序列進行排序的遞迴呼叫
quicksort(arr, head, i-1);
quicksort(arr, i+1, tail);
return
arr;
}
排序演算法 JS實現
原文引用自這裡,這裡只是我自己的學習的補充以及筆記 時間複雜度,o n2 var arr 5,6,3,1,8,7,2,4 function insertsort arr else return arr console.log insertsort arr 時間複雜度,o n2 var arr 5,1...
JS實現排序演算法
目錄 一 氣泡排序 方法名 sortarr 功能介紹 對陣列進行排序 冒泡演算法 arguments arr 必輸項 需要排序的陣列 action 非必輸項 up 公升序,down 降序 預設 let sortarr function arr,action 空陣列或者陣列1個元素,不需要排序直接跳出...
排序演算法(js實現)
氣泡排序 兩兩比較,遍歷一趟會挑出最大的值放在最後。function bubblesort arr return arr 選擇排序 從頭至尾掃瞄序列,每次找出最小的乙個元素,和第乙個元素交換,接著從剩下的元素中繼續這種選擇和交換方式,最終得到乙個有序序列。function selectsort ar...