首页 > 其他分享 >golang选择排序

golang选择排序

时间:2022-12-02 16:02:29浏览次数:35  
标签:minIndex 选择 listLen 迭代 nums min list golang 排序

选择排序:每一轮迭代选择出一个最小的数,然后做一次交换元素。不用像冒泡排序那样需要交换元素那么频繁。不过也是效率比较槽糕。

原理介绍:

{4,7,3,10,1,8,19}

第一轮迭代,从第一个数开始,左边到右边进行扫描,找到最小的数 1,与数列里的第一个数交换位置。

​第二轮迭代,从第二个数开始,左边到右边进行扫描,找到第二小的数 3,与数列里的第二个数交换位置。

第三轮迭代,从第三个数开始,左边到右边进行扫描,找到第三小的数 4,与数列里的第三个数交换位置。

第N轮迭代:....

下图显示:

golang选择排序_交换元素

                                           网络图片

代码:

package main

import (
"fmt"
)

func main() {
var nums = []int{4, 2, 10, 3, 188, 43, 19, 1, 80, 24, 30}
BubbleSort(nums)
fmt.Println(nums)
}
func BubbleSort(list []int) {
listLen := len(list)
for i := 0; i < listLen-1; i++ {
min := list[i]
minIndex := i
for j := i + 1; j < listLen; j++ {
if list[j] < min {
min = list[j]
minIndex = j
}
}
if i != minIndex {
list[i], list[minIndex] = list[minIndex], list[i]
}
}
}

golang选择排序_交换元素_02


算法可以做改进:每次扫描的时候,不仅找出最小的数,同时也找出最大的数。这样效率提高一倍。


标签:minIndex,选择,listLen,迭代,nums,min,list,golang,排序
From: https://blog.51cto.com/wyf1226/5907112

相关文章