golang 算法之 pancake

// Pancake Sort in Golang
package main

import "fmt"

func main() {
    list := data{28, 11, 59, -26, 503, 158, 997, 193, -23, 44}
    fmt.Println("\n--- Unsorted --- \n\n", list)

    list.pancakesort()
    fmt.Println("\n--- Sorted ---\n\n", list, "\n")
}

type data []int32

func (dataList data) pancakesort() {
    for uns := len(dataList) - 1; uns > 0; uns-- {
        // find largest in unsorted range
        lx, lg := 0, dataList[0]
        for i := 1; i <= uns; i++ {
            if dataList[i] > lg {
                lx, lg = i, dataList[i]
            }
        }
        // move to final position in two flips
        dataList.flip(lx)
        dataList.flip(uns)
    }
}

func (dataList data) flip(r int) {
    for l := 0; l < r; l, r = l+1, r-1 {
        dataList[l], dataList[r] = dataList[r], dataList[l]
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值