马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 不二如是 于 2016-12-5 15:30 编辑
随机输入一串数字,然后基于冒泡排序,从大到小排列而成!
来,这里有小甲鱼老湿讲的一片冒泡排序!相当经典,传送门 -> ❂
好吧,我在用非常简单的语言解释下哈:
原理是:
临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换
这样一趟过去后,最大或最小的数字被交换到了最后一位
然后再从头开始进行两两比较交换,直到倒数第二位时结束
例子为从小到大排序,即最大的放最后!
假设,现在的数列是:
8,5,6,7,3,9
第一次,比较第一位。
8,5
8>5 , 故而交换
第一次循环 | 位置1 | 位置2 | 位置3 | 位置4 | 位置5 | 位置6 | 第一次 | 5 | 8 | 6 | 7 | 3 | 9 | 第二次 | 5 | 6 | 8 | 7 | 3 | 9 | 第三次 | 5 | 6 | 7 | 8 | 3 | 9 | 第四次 | 5 | 6 | 7 | 3 | 8 | 9 | 第五次 | 5 | 6 | 7 | 3 | 8 | 9 |
第二次循环,仍是从头开始。
因为5 < 6 ,所以不交换。
故而递增下一位判断。
第二次循环 | 位置1 | 位置2 | 位置3 | 位置4 | 位置5 | 位置6 | 第一次 | 5 | 6 | 7 | 3 | 8 | 9 | 第二次 | 5 | 6 | 7 | 3 | 8 | 9 | 第三次 | 5 | 6 | 3 | 7 | 8 | 9 | 第四次 | 5 | 6 | 3 | 7 | 8 | 9 |
第三次循环 | 位置1 | 位置2 | 位置3 | 位置4 | 位置5 | 位置6 | 第一次 | 5 | 6 | 3 | 7 | 8 | 9 | 第二次 | 5 | 3 | 6 | 7 | 8 | 9 |
第四次循环 | 位置1 | 位置2 | 位置3 | 位置4 | 位置5 | 位置6 | 第一次 | 3 | 5 | 6 | 7 | 8 | 9 | |
最终得到从小到大排序:
3,5,6,7,8,9
有没有觉得很好玩~
脚本实现也是这样,每次按位比较,到倒数第二项就结束!
直到第一位,小于(大于)第二位,就按从小(大)到大(小)的数据排列。
在写脚本前,有些问题还需要深入思考下!
就是循环种类!
你发现没有其实在冒泡排序中存在两种排序方式。
第一种,小循环,按照位数两两比较
第二种,大循环,进行每轮之间的循环!
小循环,很好理解。
那么问题来了,大循环,如何判断是否要进行下一轮循环呢?
没错,就是设置一个判断变量,用来标志是否要进行下一轮。
靠!
你这说跟没说一样,好不好啦~
那怎样确定这个判断变量呢?
没错就是通过小循环,来定的!
如果小循环发生了调换,那么这个判断值默认为0,认为需要进行下一轮
如果小循环第一、二位,都没有发生调换,判断值为1,那就不需要进行下一轮啦!
来吧,看脚本实现:
冒泡排序.zip
(59.8 KB, 下载次数: 8, 售价: 10 鱼币)
|