メリークリスマス
今日はバブルソートをプレゼント(?)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Array
def swap!(a, b)
raise ArgumentError unless a.between?(0, self.count-1) && b.between?(0, self.count-1)
self[a], self[b] = self[b], self[a]
self
end
def swap(a, b)
self.dup.swap!(a, b)
end
end
array = [11, 13, 17, 19, 23, 29, 31]
p array
def sort_desc(end_i, array)
end_i.times do |i|
if array[i] < array[i+1]
array.swap!(i, i+1)
end
end
end
end_index = array.length - 1
array.each_with_index do |a, i|
sort_desc(end_index - i, array)
end
p array
出力
[11, 13, 17, 19, 23, 29, 31]
[31, 29, 23, 19, 17, 13, 11]
参考文献
Arrayを拡張したswap関数はここから引用 Rubyの配列でswap(入れ替え)メソッド