关于排序——ruby版练手

冒泡&选择排序

快排两种写法,第一种用ruby的partition,简短,第二种为常规快排写法

arr1 = [4, 6, 2, 7, 1, 3, 8, 9, 5, 0]
arr2 = [8, 12, 4, 14, 2, 6, 16, 18, 10, 20]
arr3 = [8, 12, 4, 14, 2, 6, 16, 18, 10, 20]
arr4 = [8, 12, 4, 14, 2, 6, 16, 18, 10, 20]

#冒泡——两两比较,发现两元素的次序相反时即交换
def bubble_sort(arr)
  0.upto(arr.length - 1) do |i|
    1.upto(arr.length - 1 - i) do |j|
         if ( arr[j-1] > arr[j] )
           tmp = arr[j-1]
           arr[j-1] = arr[j]
           arr[j] = tmp
         end
    end
  end
end

bubble_sort(arr1)
p arr1

#选择排序——每次从待排数据汇总选出最值,放在已拍好的序列最后
def selection_sort(arr)
  0.upto(arr.length - 2) do |i|
      (i+1).upto(arr.length - 1) do |j|
        if(arr[i] > arr[j])
          tmp = arr[i]
          arr[i] = arr[j]
          arr[j] = tmp
        end
      end
  end
end

insert_sort(arr2)
p arr2


#快排——ruby方法partition ——选择一基准元素,划分左右两个无序区间,该基准元素放在其最终位置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值