名词解释
选择排序,主要针对位置来进行排序的算法。
假设对一组10个同学进行排序,排序的标准是其中考试成绩(便于理解,假设成绩没有重复的),按照成绩由低到高排序。
老师说:第一个位置的同学(选择位置),你和你后面所有的同学逐个比较成绩,如果你的成绩比该同学高,则你们俩互换位置,然后新的第一位的同学接着上次比较位置继续下去比较,同样,如果比另一位同学成绩高,再互换位置,互换位置后继续上次的比较方式
这样,可以找出第一个位置上的同学(成绩最低的同学)
依次查找成绩倒数第二的同学
所以,选择排序中的“选择”一词有两层含义,一是选择位置,二是选择此位置上合适的元素。
使用golang实现选择排序算法
需要注意的是,Go中的数组是引用型变量,所以可直接交换位置。
/************************************************************
** @Description: selection
** @Author: haodaquan
** @Date: 2018-08-30 22:18
** @Last Modified by: haodaquan
** @Last Modified time: 2018-08-30 22:18
*************************************************************/
package selection
//每次查找剩余元素的最小值,交换位置
func Sort(arr []int) []int {
len := len(arr)
if len <= 1 {
return arr
}
for i := 0; i < len; i++ {
var minIndex = i
for j := i + 1; j < len; j++ {
if arr[minIndex] > arr[j] {
minIndex = j
}
}
arr[i], arr[minIndex] = arr[minIndex], arr[i]
}
return arr
}
测试代码和性能测试代码已经放到了github上,地址:
https://github.com/george518/PPGo_algorithm/tree/master/sort/selection
不妨一试