複習資料結構中的各個排序演算法,主要為了自己檢視~
快排用了分治的思想
時間複雜度:最優(nlogn)最差(n**2)
空間複雜度:logn
<
!doctype html>
"en"
>
"utf-8"
>
"x-ua-compatible" content=
"ie=edge"
>
"viewport" content=
"width=device-width, initial-scale=1.0"
>
document<
/title>
<
/head>
let dat=[4
,1,5
,7,2
,0,3
,7];
function
quicksort
(data)
//此處要將基準數從原陣列移除,避免上面的data.length判斷陷入死迴圈
let basedata=data.
splice(0
,1)[0];
let leftdata=
,rightdata=
;//注意此處的data.length和上面不同,移除了基準數,比 上面小1
for(
let i=
0;i)else
} leftdata=
quicksort
(leftdata)
; rightdata=
quicksort
(rightdata)
;// return leftdata.concat(basedata,rightdata);
return
[...leftdata, basedata,
...rightdata];}
var sorteddata=
quicksort
(dat)
;console.
log(sorteddata)
;<
/script>
<
/body>
<
/html>
function
bubblesort
(arr)}}
return arr
}var a=[9
,3,5
,2,8
,4,1
,0,6
] console.
log(
bubblesort
(a))
;<
/script>
function
******selectsort
(arr)}if
(min!==i)
}return arr
}var a=[9
,3,5
,2,8
,4,1
,0,6
] console.
log(
******selectsort
(a))
;<
/script>
function
straightinsertionsort
(arr)
arr[j+1]
=e }
return arr
}var a=[9
,3,5
,2,8
,4,1
,0,6
] console.
log(
straightinsertionsort
(a))
<
/script>
function
shell
(arr)
arr[j+gap]
=e }
}return arr
}var a=[9
,3,5
,2,8
,4,1
,0,6
] console.
log(
shell
(a))
;<
/script>
資料結構實訓 各種排序
任務 用程式實現插入法排序 起泡法改進演算法排序 利用插入排序和冒泡法的改進演算法,將使用者隨機輸入的一列數按遞增的順序排好。輸入的資料形式為任何乙個正整數,大小不限。輸出的形式 數字大小逐個遞增的數列。include using namespace std void insertsort int ...
資料結構 各種排序演算法比較
一,各種排序演算法比較 各種排序演算法比較 二,相關概念 1 穩定排序和非穩定排序 簡單地說就是所有相等的數經過某種排序方法後,仍能保持它們在排序之前的相對次序,我們就說這種排序方法是穩定的。反之,就是非穩定的。比如 一組數排序前是a1,a2,a3,a4,a5,其中a2 a4,經過某種排序後為a1,...
資料結構中各種內部排序演算法的比較
20101002 1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。1 如果不多於1個資料,直接返回。2 一般選擇序列最左邊的值作為支點資料。3 將序列分成2部分,一部分都大於支點資料,另外一部分...