简单选择排序法
Posted 算法精解
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单选择排序法相关的知识,希望对你有一定的参考价值。
简介
算法描述
69,65,90,37,92,6,28,54
图1 简单选择排序过程
算法实现
简单选择排序Golang代码示例如下:
package selectionSort
func SelectionSort(arr []int, n int) {
for i := 0; i < n - 1; i++ {
// 记录需要和第k个元素交换
k := i
for j := i + 1; j < n; j++ {
// 查找最小数据,保存其序号在k中
if arr[k] > arr[j] {
k = j
}
}
arr[i], arr[k] = arr[k], arr[i]
}
}
测试用例:
func TestSelectionSort(t *testing.T) {
rand.Seed(time.Now().Unix())
var arr []int
for i := 0; i < 10; i++ {
temp := rand.Intn(1000)
arr = append(arr, temp)
}
origin_sort, origin := append([]int{}, arr...), append([]int{}, arr...)
sort.Ints(origin_sort)
selectionSort.SelectionSort(arr, len(arr))
if !reflect.DeepEqual(origin_sort, arr) {
t.Errorf("Got %v for input %v; expected %v", arr, origin, origin_sort)
}
}
测试结果如图2所示:
图2 测试结果
《零基础学算法第2版》4.4简单选择排序法
以上是关于简单选择排序法的主要内容,如果未能解决你的问题,请参考以下文章