day 15 golang各種排序

2021-08-07 06:28:04 字數 2638 閱讀 7321

package main

import (

"fmt")/*

todo:直接插入

*/func straightinsertionsort(slice int)

slice[j + 1] = temp;

} fmt.println("直接插入", slice)

return}/*

todo:希爾排序

*/func shellsort(slice int)

slice[j + step] = temp

} step = step / 2

} fmt.println("希爾排序", slice)

return}/*

todo:簡單選擇排序

*/func selectsort(slice int)

} if (k != i)

} fmt.println("簡單選擇", slice)

return}/*

todo:堆排序

*/func heapbuild(root int, slice int, size int)

} if slice[m] > slice[root]

} return

}func heapsort(slice int)

//這裡是大於等於1

for last := size - 1; last >= 1; last--

fmt.println("堆 排 序", slice)

return}/*

todo:氣泡排序

*/func bubblesort(slice int)

} }fmt.println("氣泡排序", slice)}/*

todo:快速排序

*/func quicksort(slice int, start int, end int)

first, last := start, end

key := slice[first]

for last > first

slice[first] = slice[last]

for last > first&&slice[first] <= key

slice[last] = slice[first]

} slice[first] = key

quicksort(slice, start, first - 1)

quicksort(slice, first + 1, end)}/*

todo:歸併排序

*/func merge(slice int, slicetemp int, start, mid, end int) else

} for i <= mid

for j <= end

for i := start; i <= end; i++

}func mergesort(slice int, slicetemp int, start int, end int) }/*

todo:基數排序

*/func radixsort(slice int)

} var bucket [10]int

temp := make(int, size, size)

radix := 1

for i := 0; i < maxnumofdigital; i++

for j := 0; j < size; j++

for j := 1; j < 10; j++

for j := size - 1; j >= 0; j--

for j := 0; j < size; j++

radix *= 10

} fmt.println("基數排序", slice)

}func main()

slicetemp := make(int, len(slice), len(slice))

copy(slicetemp, slice)

straightinsertionsort(slicetemp)

copy(slicetemp, slice)

shellsort(slicetemp)

copy(slicetemp, slice)

selectsort(slicetemp)

copy(slicetemp, slice)

heapsort(slicetemp)

copy(slicetemp, slice)

bubblesort(slicetemp)

copy(slicetemp, slice)

quicksort(slicetemp, 0, len(slicetemp) - 1)

fmt.println("快速排序", slicetemp)

copy(slicetemp, slice)

slicetemp2 := make(int, len(slice), len(slice))

mergesort(slicetemp, slicetemp2, 0, len(slice) - 1)

fmt.println("歸併排序", slicetemp)

copy(slicetemp, slice)

radixsort(slicetemp)

}

day 16 C 各種排序

include include using namespace std todo 直接插入排序 時間複雜度o n 2 最好情況 有序,o n 最差情況 到序,o n 2 空間複雜度o 1 穩定性 穩定 vectorstraightinsertionsort vectorarray array j 1...

演算法(15) 各種常用的排序演算法

僅記錄學習筆記,如有錯誤歡迎指正。記錄一下常用的陣列的各種排序 複雜度o n2 public static void bubblesort int array int length array.length 外層迴圈控制比較輪數i for int i 0 i length i 複雜度o n2 pub...

排序1 5 各種排序演算法的總結和比較

嚴重宣告 此貼 http www.cnblogs.com flyingbread archive 2007 02 02 636993.html,請註明出處。1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面...