go的堆排序

2022-08-19 05:30:11 字數 1274 閱讀 9391

堆的概念:堆是一種圖的樹狀結構,被用於實現「優先佇列」。

1.首先建立堆:

堆的特性:

(1).完全二叉樹;

(2).每乙個節點都大於其左右子節點;

(3).根節點最大(大堆);

(4).左子節點2i+1,由子節點2i+2,父節點(i-1)/2;

package main

import "fmt"

func parentnode(i int) int

//左節點

func leftnode(i int) int

//右節點

func rightnode(i int) int

//建立heap

func buildheap(heap int)

}func maxheap(heap int, i int, length int) else

if right < length && heap[right] > heap[largest]

if largest != i

}func main()

buildheap(a)

fmt.println(a)

}

2.堆排序

package main

import "fmt"

//堆的特性

//1.是完全二叉樹

//2.每乙個節點都大於子節點(大堆)

//3.根節點最大

//4.左子節點2i+1, 由子節點2i+2, 父節點(i-1)/2

func parentnode(i int) int

//左節點

func leftnode(i int) int

//右節點

func rightnode(i int) int

//建立heap

func buildheap(heap int) int

return length

}func maxheap(heap int, i int, length int) else

if right < length && heap[right] > heap[largest]

if largest != i

}func main()

heaplength := buildheap(a)

fmt.println(a)

for i := len(a) - 1; i >= 0; i--

fmt.println(a)

}

go 排序演算法 堆排序

1.5 堆排序 堆排序 heapsort 是指利用堆這種資料結構所設計的一種排序演算法。堆積是乙個近似完全二叉樹的結構,並同時滿足堆積的性質 即子結點的鍵值或索引總是小於 或者大於 它的父節點。核心思路 1 depth length 2 1 節點深度,n,2n 1,2n 2 2 遞迴思想,找出最大值...

Go語言 堆排序

1 前言 在了解堆排序之前,需要知道堆的一些特徵,那就是堆就是乙個完全二叉樹,所以需要了解完全二叉樹的特點 完全二叉樹的特點 1 葉子節點只能在最大的兩層出現 2 如果i 1,結點就是根結點,如果i 1,則其雙親parent i i 2 3 如果2i n,則結點無左孩子,如果2i 1 n,則結點無右...

go 多重排序 堆排序

記錄一下go實現多重排序的方法和實現堆排序的方式 實現sort介面即可用sort.sort 方法對物件進行排序,而多重排序呢,我想傳入不同排序規則,然後讓該物件依次執行不同規則 排序規則 type lessfunc func p1,p2 curriculumelem bool multisorter...