Skip to content

Commit e475308

Browse files
committed
quick_sort.rb,array_sort.rb追加。
1 parent 6f19784 commit e475308

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed

array_sort.rb

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#
2+
# Sort by ruby array
3+
#
4+
# Created 2012/NOV/6
5+
# Go Hosohara [email protected]
6+
#
7+
8+
# Number of integer you will sort
9+
Repeat = 100
10+
# Sort array
11+
s_array = []
12+
13+
# Create data
14+
puts "Sort preparing..."
15+
1.upto(Repeat){
16+
s_array << rand(Repeat*10)
17+
}
18+
p s_array.join(" ")
19+
20+
puts "Sort begin"
21+
s_array.sort!
22+
puts "Sort end"
23+
24+
# Show sorted data
25+
p s_array.join(" ")

quick_sort.rb

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#
2+
# Quick sort
3+
#
4+
# Created 2012/NOV/5
5+
# Go Hosohara [email protected]
6+
#
7+
8+
# Number of integer you will sort
9+
Repeat = 100
10+
# Sort data
11+
$g_sort = []
12+
13+
#
14+
#Quick sort
15+
#
16+
def quick_sort(bottom,top)
17+
return if bottom >= top
18+
# Select first value as sort base value
19+
div = $g_sort[bottom]
20+
upper = top
21+
lower = bottom
22+
while lower < upper do
23+
while lower <= upper && $g_sort[lower] <= div do
24+
lower += 1
25+
end
26+
while lower <= upper && $g_sort[upper] > div do
27+
upper -= 1
28+
end
29+
if lower < upper
30+
tmp = $g_sort[lower]
31+
$g_sort[lower] = $g_sort[upper]
32+
$g_sort[upper] = tmp
33+
end
34+
end
35+
# Move selected value to center
36+
tmp = $g_sort[bottom]
37+
$g_sort[bottom] = $g_sort[upper]
38+
$g_sort[upper] = tmp
39+
40+
quick_sort(bottom,upper - 1)
41+
quick_sort(upper + 1,top)
42+
43+
end
44+
45+
#
46+
#Main
47+
#
48+
49+
# Create data
50+
puts "Sort preparing..."
51+
1.upto(Repeat){
52+
$g_sort << rand(Repeat*10)
53+
}
54+
p $g_sort.join(" ")
55+
56+
puts "Sort begin"
57+
quick_sort(0,Repeat-1)
58+
puts "Sort end"
59+
60+
# Show sorted data
61+
p $g_sort.join(" ")

0 commit comments

Comments
 (0)