算法:选择排序
算法 About 1,414 words算法演进
- 假定第
0
位索引对应元素值最小。 - 第一次循环从第
1
位索引开始,与第0
位索引对应的元素对比,如果第1
位索引对应的元素比第0
位索引对应的元素小,交换元素对应的值。 - 第二次循环从第
2
位索引开始,与第0
位索引对应的元素对比,如果第2
位索引对应的元素比第0
位索引对应的元素小,交换元素对应的值。 - 第三次循环从第
3
位索引开始,与第0
位索引对应的元素对比,如果第3
位索引对应的元素比第0
位索引对应的元素小,交换元素对应的值。 - 依此类推,重复
array.length-1
次循环。
[100 20 300 0]
第 1 次排序# [0 100 300 20]
第 2 次排序# [0 20 300 100]
第 3 次排序# [0 20 100 300]
演进示例代码
func SelectSortEvolution() {
arr := []int{100, 20, 300, 0}
// 假设arr[0]为最小值,从第二个元素开始遍历(计数都从1开始)
for i := 1; i < len(arr); i++ {
// 如果元素比第一个元素(第0位索引)大,则交换
if arr[0] > arr[i] {
temp := arr[0]
arr[0] = arr[i]
arr[i] = temp
}
}
fmt.Println(arr)
for i := 2; i < len(arr); i++ {
// 如果元素比第二个元素(第1位索引)大,则交换
if arr[1] > arr[i] {
temp := arr[1]
arr[1] = arr[i]
arr[i] = temp
}
}
fmt.Println(arr)
for i := 3; i < len(arr); i++ {
// 如果元素比第三个元素(第2位索引)大,则交换
if arr[2] > arr[i] {
temp := arr[2]
arr[2] = arr[i]
arr[i] = temp
}
}
fmt.Println(arr)
}
选择排序代码
arr := []int{100, 20, 300, 0}
fmt.Println(arr)
for i := 0; i < len(arr)-1; i++ {
for j := 1 + i; j < len(arr); j++ {
if arr[i] > arr[j] {
temp := arr[i]
arr[i] = arr[j]
arr[j] = temp
}
}
fmt.Println("第", i+1, "次排序#", arr)
}
Views: 1,405 · Posted: 2021-02-05
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...