selection sort


See On Github

Data

Contributor

Generic placeholder thumbnail

by jcla1

in go

Source Code

package selectionSort

func SelectionSort(arr []int) []int {
	length := len(arr)
	var minIndex int

	for i := range arr {
		minIndex = i
		for j := i; j < length; j++ {
			if arr[j] < arr[minIndex] {
				minIndex = j
			}
		}
		if minIndex != i {
			arr[i], arr[minIndex] = arr[minIndex], arr[i]
		}
	}
	return arr
}
package selectionSort

import "testing"

func TestSelectionSort(t *testing.T) {
	arrs := [][]int{[]int{-2, 1, -3, 4, -1, 2, 1, -5, 4}, []int{2, 3, 7, -5, -1, 4, -10}}

	var result []int

	for _, arr := range arrs {
		result = SelectionSort(arr)
		if !isSorted(result) {
			t.Errorf("SelectionSort(%v) = %v", arr, result)
		}
	}
}

func isSorted(arr []int) bool {
	for i := 1; i < len(arr); i++ {
		if arr[i-1] > arr[i] {
			return false
		}
	}

	return true
}