Skip to content

Commit 348701b

Browse files
jpoirierjpoirier
authored andcommitted
aaded selection sort file
1 parent c3060c0 commit 348701b

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

sorting/selection_sort.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*
2+
3+
*/
4+
package main
5+
6+
import (
7+
"fmt"
8+
)
9+
10+
func selectMax(a []int) int {
11+
i := 0
12+
maxPos := 0
13+
right := len(a) - 1
14+
for {
15+
i += 1
16+
if i <= right {
17+
if a[i] > a[maxPos] {
18+
maxPos = i
19+
}
20+
continue
21+
}
22+
break
23+
}
24+
return maxPos
25+
}
26+
27+
func SelectionSort(array []int) {
28+
for i := len(array)-1; i >= 1; i-- {
29+
maxPos := selectMax(array[0:i+1])
30+
if maxPos != i {
31+
array[i], array[maxPos] = array[maxPos], array[i]
32+
}
33+
}
34+
}
35+
36+
func main() {
37+
array := []int{19, 2, 23, 0, 24, 7, 11, 22, 4, 21, 21, 2}
38+
fmt.Println("Unsorted: ", array)
39+
SelectionSort(array)
40+
fmt.Println("Sorted : ", array)
41+
for i := len(array) - 1; i > 0; i-- {
42+
if array[i] < array[i-1] {
43+
fmt.Println("FAILED")
44+
return
45+
}
46+
}
47+
fmt.Println("PASSED")
48+
}

0 commit comments

Comments
 (0)