博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[golang] 数据结构-地精排序
阅读量:6091 次
发布时间:2019-06-20

本文共 945 字,大约阅读时间需要 3 分钟。

碎碎念

这是一个名字起得很随便的排序算法,是我我就叫他史莱姆排序ㄟ(▔,▔)ㄏ

原理

地精排序是也是一种交换排序。它只进行一轮比较,在这轮比较中,遇到比较前面元素大就向后移动一位继续比较,遇到比前面值小就和前面的值交换,并向前移动一位。

复杂度

对已经排序号的队列哥布林只需从头走到尾就结束了,所以最好情况时间复杂度就是O(n),平均的时间复杂度也和冒泡排序一样也是O(n^2)。

代码

package mainimport (    "time"    "fmt"    "math/rand")func main() {    var length = 10    var list []int    // 以时间戳为种子生成随机数,保证每次运行数据不重复    r := rand.New(rand.NewSource(time.Now().UnixNano()))    for i := 0; i < length; i++ {        list = append(list, int(r.Intn(1000)))    }    fmt.Println(list)    gnome := 1    // 地精从第二个坑位开始向最后一个坑走过去    for gnome < length {        // 如果地精发现自己这个坑位的值不比前面一个坑位的小,就继续向下个坑位走过去        if list[gnome] >= list[gnome-1] {            gnome++        } else {            // 如果比前个坑位值小,就交换两个坑位的值,然后再回到前一个坑位            list[gnome], list[gnome-1] = list[gnome-1], list[gnome]            if gnome > 1 {                gnome--            }            fmt.Println(list)        }    }}

运行结果

[golang] 数据结构-地精排序

转载于:https://blog.51cto.com/13022101/2152368

你可能感兴趣的文章
NYOJ-107 A Famous ICPC Team
查看>>
与众不同 windows phone (44) - 8.0 位置和地图
查看>>
Visual Studio Code 使用 ESLint 增强代码风格检查
查看>>
iOS设备中的推送(二):证书
查看>>
敏捷 - #3 原则:经常提供工作软件 ( #3 Agile - Principle)
查看>>
数据结构与算法:二分查找
查看>>
使用思科模拟器Packet Tracer与GNS3配置IPv6隧道
查看>>
iOS开发-NSPredicate
查看>>
Exchange Server 2003 SP2 数据存储大小限制修改
查看>>
expr命令用法-实例讲解
查看>>
酷派8705救砖
查看>>
iOS10里的通知与推送
查看>>
# C 语言编写二进制/十六进制编辑器
查看>>
EMS SQL Management Studio for MySQL
查看>>
我的友情链接
查看>>
做母亲不容易
查看>>
详细的文档(吐槽)
查看>>
DEVEXPRESS 随记
查看>>
Ember.js 入门指南——{{action}} 助手
查看>>
VMware下安装QT Creator
查看>>