golang 写个堆排序
堆排序是我觉得排序里面数据结构运用最灵活的一个算法,首先如何用一个数组表示一个堆,如何取到节点的父节点和左右子节点。 10.png 左侧是一个堆,右侧是一个数组的索引,可见我们只要从上到下,从左到右填充数字,并且保证,所有父节点大于两个子节点就可以构成一个堆。 对于一个堆,我们可以通过父节点和子节点之间的索引总结出如下关系: // func heap(i int) { // parent := (i - 1) / 2 // 父节点 // c1 := 2*i + 1 // 左子节点 // c2 :...阅读全文