Skip to content

Commit 4903c47

Browse files
committed
Implement Selection Sort in Java and Ruby
1 parent b5a7aa1 commit 4903c47

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

selection_sort/SelectionSort.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import java.util.*;
2+
3+
/**
4+
* SelectionSort
5+
*/
6+
public class SelectionSort {
7+
8+
public static void main(String[] args) {
9+
int inputArr[] = {20, 13, 17, 15, 18, 16, 14, 19};
10+
11+
// variables
12+
int i = 0;
13+
int k = 0;
14+
int idxMin = 0;
15+
int w = 0;
16+
17+
int len = inputArr.length;
18+
19+
long start = System.nanoTime();
20+
21+
while(i < len - 1) {
22+
idxMin = i;
23+
k = i + 1;
24+
25+
while(k < len) {
26+
if(inputArr[k] < inputArr[idxMin]) {
27+
idxMin = k;
28+
29+
} else {
30+
k++;
31+
}
32+
33+
}
34+
// change the min number
35+
w = inputArr[i];
36+
37+
inputArr[i] = inputArr[idxMin];
38+
39+
inputArr[idxMin] = w;
40+
41+
i++;
42+
}
43+
44+
System.out.println(Arrays.toString(inputArr));
45+
46+
long end = System.nanoTime();
47+
48+
System.out.println("Exec time: " + (end - start) / 1000000f + " ms");
49+
}
50+
}

selection_sort/SelectionSort.rb

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
require 'time'
2+
3+
class SelectionSort
4+
input_arr = [20, 13, 17, 15, 18, 16, 14, 19]
5+
6+
i = 0
7+
k = 0
8+
idxMin = 0
9+
w = 0
10+
11+
len = input_arr.size
12+
13+
start_time = Time.now
14+
15+
while i < len - 1 do
16+
idxMin = i
17+
k = i + 1
18+
19+
while k < len do
20+
if input_arr[k] < input_arr[idxMin]
21+
idxMin = k
22+
elsif
23+
k += 1
24+
end
25+
end
26+
27+
w = input_arr[i]
28+
29+
input_arr[i] = input_arr[idxMin]
30+
31+
input_arr[idxMin] = w
32+
33+
i += 1
34+
end
35+
36+
puts input_arr.to_s
37+
38+
end_time = Time.now
39+
40+
puts "Exec time: #{(end_time - start_time) * 100000} ms"
41+
end

0 commit comments

Comments
 (0)