用Scala瞎写的冒泡排序算法

学习Scala有段时间了,一直找不到好的实践方式。无意间看到了冒泡排序,就想着用Scala来写写冒泡排序。写到最后发现,真的是乱写一通,不过对于冒泡排序和Scala语言都有了一个新的认识。这就够了。这片文章就是记录我是如何左拼右凑用Scala把冒泡排序写出来的。
摘要由CSDN通过智能技术生成

               

冒泡排序的基本概念

冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面,如此继续直到最后一个数;然后再从头开始,一直到倒数第二个数;如此循环一直到排序完成。

 

         

稍微想一下

基本概念已经很清楚了,我稍微的想了一下。如果用程序来实现的话,比较直观的方法就是用for循环。一开始时可以设置一个变量index,让index=0,也就是每次都从0开始循环,比较index和index+1的值,如果index的值大于index+1的值,就将它们互换,然后让index++,一直比较到最后两个值;一轮完成后,再重新让index为0,重新从0开始循环,依旧上面的逻辑,只不过这次只循环到倒数第二个值就好了;以此类推。

有了上面的想法,我很直观的写出下面的代码:(这里没有Scala代码框,我就用Java的代替了)

这个代码可以用来做第一次循环,那么问题来了:之后的循环怎么办?包括我该怎么控制一轮的循环以及每一轮循环中for循环的上边界,毕竟每一轮for循环的上边界都是不同的。

 

            

去掉for循环

网上最推崇的方法是用嵌套for循环的方法,自己对for循环不是很喜欢,更何况for循环嵌套for循环的做法。所以我的想法是去掉for循环。就连上面代码中的那一层也不要。当然,去掉for用while来代替等于什么也没做,因此,我只能用递归来做了。

用递归的话,我可以把上面的代码改造一下,把用来控制循环的数组索引变量i作为方法参数,这样我可以在递归调用方法时,每次把索引i加1作为参数来代替for循环。

OK,改造完就是下面的代码:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值