美文网首页IT 森林
Ruby实现--直接插入排序(Straight Insertio

Ruby实现--直接插入排序(Straight Insertio

作者: 织田信长 | 来源:发表于2015-09-25 21:38 被阅读61次

将一个记录插入到一个已经排序好的表中,以得到一个记录增一的有序表。并且最关键的一点就是它把比当前元素大的记录都往后移动,用以空出“自己”该插入的位置。当n-1趟插入完成后该记录就是有序序列。

def insertSort(tarray)
    i=1
    while(i < tarray.size) do
      if tarray[i] < tarray[i-1]
          j=i-1
          x=tarray[i]
      #puts x.class
      #puts tarray[i].class
          tarray[i]=tarray[i-1]#先与左侧第一个比自己大的交换位置
          while(x< tarray[j].to_i) do#寻找到一个比自己小的,并放在其后
            tarray[j+1]=tarray[j]
            #puts tarray[j].class
            j=j-1
          end
          tarray[j+1]=x
     end
     i=i+1
    end
  end

a=[5,2,6,4,7,9,8]
insertSort(a)
print a

[2, 4, 5, 6, 7, 8, 9]>Exit code: 0

刚开始写代码时,在x< tarray[j]处没有加to_i方法,出现了如下错误:

final.rb:10:in `<': comparison of Fixnum with nil failed (ArgumentError)

一开始我很困惑,便在输出了x.class,tarray[j].class,然而这两的输出都是Fixnum。后来发现,Ruby的Array类和其他的不太一样,Ruby中允许一个Array对象中存储不同类型的元素,当a的一个元素赋值给x后,无法确定与x比较的a[i]是否是Fixnum类型,所以报错,这只是我自己的理解。
参考:http://blog.csdn.net/hguisu/article/details/7776068.

相关文章

  • Ruby实现--直接插入排序(Straight Insertio

    将一个记录插入到一个已经排序好的表中,以得到一个记录增一的有序表。并且最关键的一点就是它把比当前元素大的记录都往后...

  • 算法(排序)

    一、内部排序 1、插入排序—直接插入排序(Straight Insertion Sort) 2、插入排序—希尔排序...

  • 几种实用的简易的排序算法

    也是面试题 一、插入排序 1.插入排序—直接插入排序(Straight Insertion Sort) 思路 遍历...

  • 2.1-插入排序-直接插入

    参考链接 插入排序:直接插入排序(Straight Insertion Sort) 白话经典算法系列之二 直接插入...

  • Ⅲ. 排序算法(Sort Algorithm)

    插入排序 1. 直接插入排序(Straight Insertion Sort) 2. 希尔排序(Shell`s S...

  • 排序算法(一)直接插入排序算法

    排序算法(一)直接插入排序算法 1.基本概念  直接插入排序(Straight-Insertion-Sort)是一...

  • 排序 29

    1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...

  • 2018-01-24

    知识点:插入排序 直接插入排序法(straight insertion sort)是一种最简单的排序方法,其基本操...

  • 插入排序延伸 NaN

    1. 直接插入排序(Straight Insertion Sort) 1.1 基本排序 注意: 其实可以再寻找 j...

  • 八大排序

    1.直接插入排序(Straight Insertion Sort) 时间复杂度O(n^2),空间复杂度O(1),稳...

网友评论

    本文标题:Ruby实现--直接插入排序(Straight Insertio

    本文链接:https://www.haomeiwen.com/subject/jjqwcttx.html