前端排序演算法

2021-10-07 11:54:36 字數 3303 閱讀 5667

按從左到右的順序,從下標為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...