add: 220219-CN [golang]
This commit is contained in:
parent
eb8fea41a6
commit
b3505f0c05
|
|
@ -0,0 +1,32 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Interval [L, R]
|
||||
func reverse(arr *[]int, L, R int) {
|
||||
for L < R {
|
||||
(*arr)[L], (*arr)[R] = (*arr)[R], (*arr)[L]
|
||||
L++
|
||||
R--
|
||||
}
|
||||
}
|
||||
|
||||
func pancakeSort(arr []int) (ret []int) {
|
||||
n := len(arr)
|
||||
for i := n; i > 0; i-- {
|
||||
maxVal, maxPos := -1, -1
|
||||
for j := 0; j < i; j++ {
|
||||
if arr[j] > maxVal {
|
||||
maxVal, maxPos = arr[j], j
|
||||
}
|
||||
}
|
||||
ret = append(ret, maxPos+1, i)
|
||||
reverse(&arr, 0, maxPos)
|
||||
reverse(&arr, 0, i-1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func main() {
|
||||
fmt.Println(pancakeSort([]int{3, 2, 4, 1}))
|
||||
}
|
||||
Loading…
Reference in New Issue