(slice []T)
| 120 | } |
| 121 | |
| 122 | func HeapSort[T constraints.Ordered](slice []T) []T { |
| 123 | N := len(slice) |
| 124 | |
| 125 | moreFunc := func(i, j int) bool { |
| 126 | return slice[i] > slice[j] |
| 127 | } |
| 128 | swapFunc := func(i, j int) { |
| 129 | slice[i], slice[j] = slice[j], slice[i] |
| 130 | } |
| 131 | |
| 132 | // build a maxheap |
| 133 | for i := N/2 - 1; i >= 0; i-- { |
| 134 | heapifyDown(slice, N, i, moreFunc, swapFunc) |
| 135 | } |
| 136 | |
| 137 | for i := N - 1; i > 0; i-- { |
| 138 | slice[i], slice[0] = slice[0], slice[i] |
| 139 | heapifyDown(slice, i, 0, moreFunc, swapFunc) |
| 140 | } |
| 141 | |
| 142 | return slice |
| 143 | } |
nothing calls this directly
no test coverage detected