以下是使用 Go 語言實(shí)現(xiàn)歸并排序算法的簡單示例:
package main
import "fmt"
func mergeSort(arr []int) []int {
if len(arr) <= 1 {
return arr
}
mid := len(arr) / 2
left := mergeSort(arr[:mid])
right := mergeSort(arr[mid:])
return merge(left, right)
}
func merge(left, right []int) []int {
result := make([]int, 0, len(left)+len(right))
i, j := 0, 0
for i < len(left) && j < len(right) {
if left[i] < right[j] {
result = append(result, left[i])
i++
} else {
result = append(result, right[j])
j++
}
}
result = append(result, left[i:]...)
result = append(result, right[j:]...)
return result
}
func main() {
// 示例數(shù)組
array := []int{64, 34, 25, 12, 22, 11, 90}
fmt.Println("Unsorted array:", array)
// 調(diào)用歸并排序函數(shù)
sortedArray := mergeSort(array)
fmt.Println("Sorted array:", sortedArray)
}
在這個例子中,mergeSort
函數(shù)接收一個整數(shù)切片,使用遞歸的方式進(jìn)行歸并排序。merge
函數(shù)用于合并兩個已排序的切片。在 main
函數(shù)中,我們定義了一個示例數(shù)組,調(diào)用 mergeSort
函數(shù)對其進(jìn)行排序,并輸出結(jié)果。
歸并排序算法的時間復(fù)雜度為 O(n log n),它是一種穩(wěn)定的排序算法。在實(shí)際應(yīng)用中,歸并排序通常用于對鏈表等數(shù)據(jù)結(jié)構(gòu)進(jìn)行排序。文章來源:http://www.zghlxwxcb.cn/news/detail-812498.html
希望你也學(xué)會了,更多編程請來二當(dāng)家的素材網(wǎng):https://www.erdangjiade.com文章來源地址http://www.zghlxwxcb.cn/news/detail-812498.html
到了這里,關(guān)于Go 語言實(shí)現(xiàn)歸并排序算法的簡單示例(附上源碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!