package main import ( "fmt" "strings" ) //字符串选择排序 //思路:每次选择一个相应的元素,然后将其放到指定的位置 //1. 假定最小的值得索引是i并赋值给min, //索引i对应的值和后面的索引对应的值依次比较, //如果索引i对应的值比后面索引对应的值大,则最小的索引minIndex=j func stringSelectSort(slice []string) []string { for i := 0; i < len(slice)-1; i++ { // 里面循环找到最小元素的坐标 minIndex := i // 前面排序好的,不用管,所以从i+1开始 for j := i + 1; j < len(slice); j++ { if strings.Compare(slice[minIndex], slice[j]) > 0 { //赋值 minIndex = j } } //for 循环外交换两个数值【比冒泡交换的次数少】 if i != minIndex { slice[i], slice[minIndex] = slice[minIndex], slice[i] } } return slice } func main() { value := []string{"z", "a", "b", "c", "o", "p"} res := stringSelectSort(value) fmt.Println(res) }