0

対角行列 (8x8) を作成し、[-30..45] の範囲の乱数で埋める必要があります。その後、配列をベクトルに変換して並べ替える必要があります。

さまざまな方法を試しました。

最初にマトリックス(8x8)を作成します

matrix = Matrix.build(8) {0}
puts matrix.each_slice(matrix.column_size) {|r| p r }

また、範囲内の乱数で配列を作成しました

array = (-30..45).to_a.shuffle
puts array [0..8]

そして、対角行列を作りました

matrixd = Matrix.diagonal(1,2,3,4,5,6,7,8)
puts matrixd.each_slice(matrix.column_size) {|r| p r}

対角行列を配列で埋めてベクトルに入れるにはどうすればよいですか? ベクトルをソートするための2つのアルゴリズムがあります

class Array
  def bubblesort!
    length.times do |j|
      for i in 1...(length - j)
        if self[i] < self[i - 1]
          self[i], self[i - 1] = self[i - 1], self[i]
        end
      end
    end
    self
  end
end

class Array
  def selectionsort!
    0.upto(length - 2) do |i|
      (min_idx = i + 1).upto(length - 1) do |j|
        if self[j] < self[min_idx]
          min_idx = j
        end
      end
      if self[i] > self[min_idx]
        self[i], self[min_idx] = self[min_idx], self[i]
      end
    end
    self
  end
end
4

1 に答える 1