zoukankan      html  css  js  c++  java
  • 有趣的珠排序

    一个数字9用9个1来表示,珠排序中的珠指的是每一个1,它把每一个1想像成一个珠子,这些珠子被串在一起,想像下算盘和糖葫芦

    Image(5)

    图1

    上图1中的三个珠就表示数字3,两个珠表示数字2,这个OK了继续,这里的3和2都叫bead

    Image(7)

    图2

    图2(a)中有两个数字,4和3,分别串在四条线上,于是数字4的最后一个珠子下落,因为它下边是空的,自由下落后变成图2(b)

    图2(c)中随机给了四个数字,分别是3,2,4,2,这些珠子自由下落,就变成了(d)中,落完就有序了,2,2,3,4

    以上就是珠排序的精华

    Image(8)

    图3

    上图3中的n表示待排序数组的长度,有多少数字就有多少层,横向表示一层

    m表示有多少个珠子,就是多少个1,这取决于最大数是几

    比如待排数组[6 2 4 1 5 9]

    Image(9)

    让珠子全部做自由落体运动

    9没有什么好落的,它在最底层

    5也没有什么好落的,全部有支撑点

    1同样不需要滑落

    4除了第一个珠子不动外,其它三颗全部下落,落到1的位置变成下边这样

    Image(10)

    过程的细节不画了,原则就是你下边有支点,你就不用再滑落了,最后变成下边这样,排序完毕

    Image(11)

    从上到下顺序输出即可得到结果:[ 1 2 4 5 6 9]

  • 相关阅读:
    Python ---chart
    python ---Pandas时间序列:生成指定范围的日期
    python 生成图表
    top 学习
    linux awk命令详解
    /proc 目录详细说明
    ps 和 top 的cpu的区别
    linux 监控性能学习笔记(1)
    转如何用九条命令在一分钟内检查Linux服务器性能?
    Linux系统排查——CPU负载篇
  • 原文地址:https://www.cnblogs.com/chenbo820/p/6046229.html
Copyright © 2011-2022 走看看