func TestBubbleTest(t *testing.T) {
arr := []int{2, 3, 5, 1, 5, 7, 4}
bubbleSort(arr)
for i := 0; i < len(arr); i++ {
fmt.Print(arr[i])
}
}
func bubbleSort(arr []int) {
if arr == nil || len(arr) < 2 {
return
}
for i := len(arr); i > 0; i-- {
for j := 0; j < i-1; j++ {
if arr[j+1] < arr[j] {
Swap(arr, j+1, j)
}
}
}
}
func TestInsertSort(t *testing.T) {
arr := []int{2, 3, 5, 1, 5, 7, 4}
insetSort2(arr)
for i := 0; i < len(arr); i++ {
fmt.Printf("%d", arr[i])
}
}
func insetSort2(arr []int) {
if len(arr) < 2 || arr == nil {
return
}
for i := 1; i < len(arr); i++ {
for j := i - 1; j >= 0 && arr[j] > arr[j+1]; j-- {
Swap(arr, j, j+1)
}
}
}
func Swap(arr []int, pre int, cur int) {
tem := arr[pre]
arr[pre] = arr[cur]
arr[cur] = tem
}
func TestSelectSort(t *testing.T) {
arr := []int{2, 3, 5, 1, 5, 7, 4}
selectionSort(arr)
fmt.Println(arr)
}
func selectionSort(arr []int) {
if arr ==nil && len(arr)<2{
return
}
for i := 0; i < len(arr); i++ {
for j := i+1; j < len(arr); j++ {
if arr[i]>arr[j] {
Swap(arr,i ,j)
}
}
}
}
func TestMergeSort(t *testing.T) {
arr := []int{5, 4, 3, 2, 1}
mergeSort(arr)
}
func mergeSort(arr []int) {
if arr == nil || len(arr) < 2 {
return
}
prosess(arr, 0, len(arr)-1)
fmt.Println(arr)
}
func prosess(arr []int, l int, r int) {
if l == r {
return
}
m := l + ((r - l) >> 1)
prosess(arr, l, m)
prosess(arr, m+1, r)
merge(arr, l, m, r)
}
// 21
func merge(arr []int, l int, m int, r int) {
help := make([]int, r - l + 1)
i := 0
p := l
p2 := m + 1
for p <= m && p2 <= r {
// 543 210
if arr[p]<=arr[p2] {
help[i]=arr[p]
p++
}else {
help[i]=arr[p2]
p2++
}
i++
}
for p<=m {
help[i]=arr[p]
i++
p++
}
for p2<=r {
help[i]=arr[p2]
i++
p2++
}
for i := 0; i < len(help); i++ {
arr[l + i]=help[i]
}
}
原文:https://www.cnblogs.com/rainbowbridge/p/14848627.html