冒泡 選擇 插入 快排 歸併的實現

2021-10-11 01:29:24 字數 2834 閱讀 2237

冒泡:

var arr =[29

,45,51

,68,72

,97];

//外層迴圈,控制趟數,每一次找到乙個最大值

for(

var i =

0; i < arr.length -

1; i++)}

} console.

log(arr)

;//[2, 4, 5, 12, 31, 32, 45, 52, 78, 89]

插入:

function

loop

(arr)

arr[j +1]

= comp

}return arr

}let test =[1

,9,8

,6,7

,6]let newx =

loop

(test)

console.

log(newx)

選擇:

概念:選擇排序大致的思路是找到資料結構中的最小值並將其放置在第一位,接著找到第二小的值並將其放在第二位,以此類推。

複雜度: o(n^2)

var

swap

=function

(array, index1, index2)

varselectionsort

=function

(array)

宣告一些將在演算法內使用的變數

for(

var i =

0;i < length -

1;i++

)外迴圈

indexmin = i;

// 假設本迭代輪次的第乙個值為陣列最小值

for(

var j = i;j < length;j++

)從當前i的值開始至陣列結束

if(array[indexmin]

> array[j]

)我們比較是否位置j的值比當前最小值小

indexmin = j;

// ;如果是,則改變最小值至新最小值}}

if(i !== indexmin)

最後,如果該最小值和原最小值不同(行),則交換其值。}}

// 複雜度是o(n^2)

return array;

}

快排:

原理:從陣列中取乙個值為基準值,並將剩下的值與之比較,小於基準值的放到左邊,大於基準值的放到右邊,並再次對左右兩邊進行快速排序,直至左右兩邊只剩乙個元素。

最壞時間複雜度:o(n^2) 當選擇的基準值為最大值或最小值時

平均時間複雜度:o(n*log2n)

function

jsquicksort

(array)

const pivotindex = math.

floor

(array.length /2)

;const pivot = array.

splice

(pivotindex,1)

[0];

//從陣列中取出我們的"基準"元素

const left =

, right =

; array.

foreach

(item =>

else})

;//至此,我們將陣列分成了left和right兩個部分

return

jsquicksort

(left)

.concat

(pivot,

jsquicksort

(right));

//分而治之

}const arr =[98

,42,25

,54,15

,3,25

,72,41

,10,121];

console.

log(

jsquicksort

(arr));

//輸出:[ 3, 10, 15, 25, 25, 41, 42, 54, 72, 98, 121 ]

歸併:

function

mergesort

(arr)

const mid = math.

floor

(length /2)

;const left = arr.

slice(0

, mid)

;const right = arr.

slice

(mid, length)

;return

merge

(mergesort

(left)

,mergesort

(right));

//要將原始陣列分割直至只有乙個元素時,才開始歸併

}function

merge

(left, right)

else

}//不可能同時存在left和right都有剩餘項的情況, 要麼left要麼right有剩餘項, 把剩餘項加進來即可

while

(il < left.length)

while

(ir < right.length)

return result;

}console.

log(

mergesort([

2,9,

1,8,

3,])

)

冒泡,快排,插入,希爾,選擇,歸併演算法

演算法,根據資料的樣子,進行做計算。爭取在固有資料的基礎上,達到計算次數 記憶體占用最少的運算方式。現將集中演算法歸納如下 演算法名稱 演算法概要 冒泡挨個拿陣列的元素和後面的做比較,發現大小不對,則交換位置,這樣導致按照座標向後運算,座標資料是一定有序的,相對後面最大或最小 快排拿乙個陣列,向前查...

python實現冒泡選擇插入快排

通過交換使相鄰的兩個數變成小數在前大數在後,這樣每次遍歷後,最大的數就 沉 到最後面了。重複n次即可以使陣列有序。def butttle arr for i in range len arr 1 exchange false for j in range len arr i 1 if arr j a...

排序演算法 插入 選擇 冒泡 快排 歸併

可以找一些帖子理解下幾類排序演算法或者聽下陳越姥姥在mooc上的資料結構 選擇類排序 交換類排序 歸併排序 基數排序 拓撲排序 從待排序的n個記錄中的第二個記錄開始,依次與前面的記錄比較並尋找插入的位置,每次外迴圈結束後,將當前的數插入到合適的位置。void sort insert int a,in...