冒泡排序算法及Ruby版的简单实现
算法原理:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
实现
假设有这样一个数组: [4, 1, 3, 2]
冒泡排序为从第一个数开始,吧这个数与后面的数比较,如果这个数比后面的大,就交换他们的位置。
比如,第一次比较4和1,发现4比1大,交换 -> [1, 4, 3, 2]
第二次比较4和3,发现还是4大,交换 -> [1, 3, 4, 2]
第三次比较4和2,仍然4比2大,交换 -> [1, 3, 2, 4]
这样在进行了第一轮循环之后,最大的数4就被顶到数组的最后去了,就像泡泡一样从水底冒起来一样。那么,要完成整个数组的排序,只需要把最大的数顶到最后,然后第二轮再把第二大的数顶到倒数第二的位置,再来第三轮。。。。一直循环下去。
回到刚才的数组,第二轮比较开始,现在的状态是[1, 3, 2, 4]
比较1和3,1小于3,跳过 -> [1, 3, 2, 4]
比较3和2,3大于2,交换 -> [1, 2, 3, 4]
这一轮到这里就可以停止了,因为第一轮已经把最大的4顶到了最后,所以第二轮只要确保第二大的数顶到倒数第二就行。
然后继续第三轮(虽然目前看起来已经排序完成了)
比较1和2,不用交换[1, 2, 3, 4]
这里比较就全部完成。原理非常简单。
def bubble_sort(list) list.each_index do |index| (list.length - index - 1).times do |e| if list[e] > list[e + 1] list[e], list[e + 1] = list[e + 1], list[e] end end end end
相关文章
Ruby on Rails实现最基本的用户注册和登录功能的教程
这里我们主要以has_secure_password的用户密码验证功能为中心,来讲解Ruby on Rails实现最基本的用户注册和登录功能的教程,需要的朋友可以参考下...2020-06-30- 这篇文章主要为大家详细介绍了js实现数组冒泡排序、快速排序的原理,感兴趣的小伙伴们可以参考一下...2016-03-10
- 二分查找是一种在已经过排序的数组中搜索指定元素用的算法,这里我们就来看一下Ruby实现二分搜索(二分查找)算法的简单示例:...2020-06-30
- 本文给大家汇总介绍了几个个人收藏的JavaScript实现冒泡排序的代码,都是非常的不错,有需要的小伙伴可以参考下...2016-06-12
- Ruby将字符串像数字一样处理.我们用单引号('...')或双引号("...")将它们括起来. ruby> "abc" "abc" ruby> 'abc' "abc" 单引号和双引号在某些情况下有不同的...2020-06-30
- Rack是一个连接Ruby程序与服务器程序之间的中间件,甚至可以说Rails也是在Rack的基础上建立起来的,这里我们就来为大家带来Ruby on Rails中Rack中间件的基础学习教程...2020-06-30
- 钩子方法即是在普通的方法上添加"钩子",使特定事件发生时可以被调用,下面就来以实例讲解Ruby中的钩子方法及对方法调用添加钩子...2020-06-30
- 单件方法顾名思义,就是只作用于单个对象的方法,同理单件类就是单件方法所存在的类,规定其作用域,这里我们就来详解Ruby中的单件方法和单件类:...2020-06-30
- 这篇文章主要介绍了c# 冒泡排序算法,需要的朋友可以参考下...2020-06-25
- gem是一种文件组织的包,一般的ruby的很多插件都有由这种各种的包提供。我们来看看gem的用法...2020-06-30
- 这篇文章主要介绍了GOLANG版的冒泡排序和快速排序分享,需要的朋友可以参考下...2020-05-11
Ubuntu上配置Ruby on Rails框架及RubyMine IDE开发环境
Ruby on Rails是Ruby世界中当仁不让的Web框架代表,甚至可以说Rails推动了Ruby的流行,这里我们就来看一下如何在Ubuntu上配置Ruby on Rails框架及RubyMine IDE开发环境...2020-06-30Ruby 中的 module_function 和 extend self异同
本文主要给大家介绍了在Ruby中 module_function 和 extend self的共同点和区别,非常的详细,也很实用,方便大家更好的理解的module_function 和 extend self...2020-06-30- 这篇文章主要介绍了C语言对数组元素进行冒泡排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-04
Ruby on rails安装后去掉DL is deprecated,please use Fiddle警告信息的方法【测试可用】
这篇文章主要介绍了Ruby on rails安装后去掉DL is deprecated,please use Fiddle警告信息的方法,通过针对Ruby on rails安装文件中的警告部分源码进行注释来达到消除警告的目的,需要的朋友可以参考下...2020-06-30- 冒泡排序和快速排序算法在开发应用中各有优点了,下面我们来看几个关于php排序的几个例子。 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组。 使用PHP描...2016-11-25
- 这篇文章主要介绍了ruby ftp封装实例详解的相关资料,需要的朋友可以参考下...2020-06-30
- 插入排序即是把已有的有序序列从后向前扫描插入元素,数值大的向后移动,这里我们就来看一下使用Ruby实现插入排序算法及进阶的二路插入排序代码示例...2020-06-30
- c语言实现插入排序、冒泡排序、选择排序、快速排序、堆排序、归并排序、希尔排序示例,需要的朋友可以参考下...2020-04-25
- 冒泡排序我们排序算法中的许多中的其中一样了,这里我们一起来了解一下php实现冒泡排序实现方法与原理,具体如下。 一个程序应包括: 对数据的描述:在程序中要指定数...2016-11-25