排序演算法go實現

2021-09-12 21:05:37 字數 968 閱讀 6486

package main

import (

"fmt"

)func heapsort(arr int)

// 堆頂是最大的了, 取出第乙個放到最後,然後從上往下調整堆

for i := length - 1; i > 0; i--

}// 調整堆

func heap(arr int, i int, last int)

max := left

right := 2*i + 2

// 如果右子樹大, 取右邊的

if right <= last && arr[right] > arr[left]

if arr[i] > arr[max]

//交換, 父節點和兩個子節點中大的交換一下

arr[i], arr[max] = arr[max], arr[i]

// 有調整,那子節點要重新調整一下

heap(arr, max, last)

}// 快排

func qsort(a int)

pivot := a[0]

low, high := 0, n-1

for low < high

a[low] = a[high]

for low < high && a[low] < pivot

a[high] = a[low]

}a[low] = pivot

qsort(a[:low])

qsort(a[low+1:])

}func main()

// 最大堆,按照從小到大的排序

heapsort(arr)

fmt.println(arr)

// 快排

fmt.println("quick sort")

arr2 := int

qsort(arr2)

fmt.println(arr2)

}

演算法 堆排序(go實現)

照舊,老鐵先開始講理論 理論 堆排序,就是根據大頂堆的特性 父節點總是大於子節點,則root節點就是堆中的最大數值,所以只要每次取出root節點,就可以完成排序。so,依然是迴圈排序,迴圈內分兩步走 第一步 將陣列按大頂堆結構排列 第二步 取出堆頂資料 第一步 將剩餘陣列按大頂堆結構排列 第二部 取...

演算法 插入排序(go實現)

插入排序的時間複雜度,正常情況會低於冒泡和選擇,最壞的情況,等於冒泡和選擇 理論部分 插入排序,就是新建立乙個陣列,將舊陣列中的資料,挨個插入到新陣列中,在插入的時候,放在正確的位置。步驟如下 初始化原始陣列sort init 初始化新陣列 reslist 1,從原始陣列的1號位開始取數 將其插入到...

go實現雞尾酒排序演算法

前面我們講解了雞尾酒排序,今天我們來用 實現下 package main import fmt 雞尾酒排序 func cocktailsort thearray int int for j thelen 1 j 0 j if flag return thearray func main fmt.pr...