排序演算法的JS實現

2022-07-12 10:57:08 字數 2546 閱讀 4077

排序演算法是基礎演算法,雖然關鍵在於演算法的思想而不是語言,但還是決定借助演算法視覺化工具結合自己常用的語言實現一下

1.氣泡排序

基本思路:依次比較兩兩相鄰的兩個數,前面數比後面數小,不變。前面數比後面數大,交換順序。一輪下來,最後的乙個數是最大的數。

外迴圈每增加一次,內迴圈減少一次。

圖形展示:

function

bubblesort(arr)

} }

return

arr;

}

2.選擇排序

基本思路:迴圈陣列,找出最小的值,和第乙個交換位置;然後在剩下的數中,找出第二小的數,放在第二個;依次類推。

圖形展示:

function

selectsort(arr)

if(i!=min)

}}

return

arr;

}

3.插入排序

基本思路:把陣列分為[已排序]和[未排序]兩部分,第乙個數為[已排序],其餘為[未排序];

從[未排序]中抽出乙個數,和[已排序]部分比較,插入到合適位置。

圖形展示:

function

insert(arr)

arr[j+1]=value;

}return

arr;

}

4、合併排序

基本思路:不斷的將陣列對半分,只到每個陣列只有乙個元素;

將分出來的部分重新合併,合併的時候按順序排列。

圖形展示:

方法一

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;

}

方法二

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

}return result.concat(left.slice(left_index),right.slice(right_index));

5.快速排序

基本思路:以乙個數為基準,比基準小的數放到左邊,比基準大的值放右邊;遞迴進行,不能再分後退出遞迴

圖形展示:

方法一:以中間值為基準,這種方法建立了兩個新陣列,暫用空間

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...