在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

go语言堆排序怎么实现

135次阅读
没有评论

共计 866 个字符,预计需要花费 3 分钟才能阅读完成。

Go 语言堆排序的实现步骤如下:

  1. 首先,定义一个用于进行堆调整的函数 adjustHeap,该函数接受三个参数:待调整的切片 arr,当前需要调整的节点的下标 i,以及堆的大小 length
  2. adjustHeap 函数中,首先获取当前节点的值,然后计算出其左子节点和右子节点的下标。
  3. 比较左子节点和右子节点的值,取较大值的下标作为 maxIndex
  4. 判断当前节点与其子节点的大小关系,如果当前节点的值小于 maxIndex 所对应的子节点的值,则交换两者的值,并递归调用 adjustHeap 函数,以保证堆的性质。
  5. 在主函数中,首先构建一个初始堆,通过调用 adjustHeap 函数来从最后一个非叶子节点开始进行堆调整。
  6. 将堆顶元素与最后一个元素交换,然后将堆的大小减一,并调用 adjustHeap 函数对堆顶元素进行调整,以保持堆的性质。
  7. 重复步骤 6,直到堆的大小为 1,此时,整个序列已经有序。

下面是具体的代码实现:

package main

import "fmt"

func adjustHeap(arr []int, i, length int) {temp := arr[i]
	for k := i*2 + 1; k < length; k = k*2 + 1 {if k+1 < length && arr[k] < arr[k+1] {k++}
		if arr[k] > temp {arr[i] = arr[k]
			i = k
		} else {break
		}
	}
	arr[i] = temp
}

func heapSort(arr []int) {length := len(arr)
	for i := length/2 - 1; i >= 0; i-- {adjustHeap(arr, i, length)
	}
	for i := length - 1; i > 0; i-- {arr[0], arr[i] = arr[i], arr[0]
		adjustHeap(arr, 0, i)
	}
}

func main() {arr := []int{9, 8, 7, 6, 5, 4, 3, 2, 1}
	heapSort(arr)
	fmt.Println(arr)
}

输出结果为 [1 2 3 4 5 6 7 8 9],表示已经成功对输入的序列进行了堆排序。

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-13发表,共计866字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 三级网站视频 | 特级毛片a级毛片免费观看网站 | 中文字幕无码不卡一区二区三区 | 亚洲自拍偷拍在线 | 久久亚洲色www成人欧美 | 小说区亚洲区 | 欧美亚洲日本一区 | 日日操日日 | 成人欧美日本免费观看 | 天天久久| 中国人妻被两个老外三p | 男女很舒服爽视频免费 | 99热这里只有精品第一页 | 欧美中文字幕在线 | 中国丰满少妇人妻xxx性董鑫洁 | 免费的黄色毛片 | 久久久久久国产精品无码超碰 | 自拍偷拍视频在线观看 | 999精品在线视频 | 涩色婷婷狠狠第四四房社区奇米 | 91天堂素人 | 国产国产人免费人成免费视频 | 自拍偷拍在线视频 | 亚洲va天堂va国产va久 | 国产对白老熟女正在播放 | 国产亚洲综合一区在线 | 中文无码成人免费视频在线观看 | 日本免费一二区 | 天天影视色香欲综合网 西瓜影音 | 亚洲av在线观看 | 欧美一区二区三区精品 | 一本久道中文无码字幕av | 久久久国产99久久国产一 | 麻豆国产在线精品国偷产拍 | 亚洲 欧洲 自拍 另类 校园 | 搡老熟女中国老太 | 国产精品自拍亚洲 | 成人免费看吃奶视频网站 | 很黄很色的摸下面的视频 | 免费a在线观看 | 久久久久久国产精品无码下载 |