0
点赞
收藏
分享

微信扫一扫

go 算法实现-选择排序

梦想家们 2022-01-04 阅读 98
算法golang

原理

  从待排序的数据元素中选出最小或最大的一个元素,存放在序列的起始位置,然后再从剩余的元素中寻找最小或最大的元素,再放到已排序的序列末尾。以此类推,直到待排序元素个数为零。复杂度O(N^2) 

在这里插入图片描述

代码实现(最小元素)

核心:1.极值元素的寻找 2.添加极值元素到已排序序列 3.已寻找到的极值去除
通过两个函数实现
函数findSmallest () 找到最小的元素,并返回
函数selectionSort()将最小的元素添加到result切片中(排序序列)

package main

import "fmt"

func main() {
	arr := []int{5, 7, 1, 8, 3, 2, 6, 4, 9}
	arr = selectionSort(arr)
	fmt.Println(arr)
}

func findSmallest (arr []int) int {
	smallest := arr[0]
	smallest_index :=0
	for i:=0;i<len(arr);i++{
		if arr[i] < smallest {
			smallest = arr[i]
			smallest_index = i
		}
	}
	return smallest_index
}
func selectionSort(arr []int) []int {
	result := []int{}
	count := len(arr)
	for i:= 0;i<count;i++ {
		smallest_index:= findSmallest(arr)
		result = append(result,arr[smallest_index] )
		arr = append(arr[:smallest_index],arr[smallest_index+1:]... )  // 去除arr 中已排序的元素
	}
    return  result
}

结果

[1 2 3 4 5 6 7 8 9]
举报

相关推荐

0 条评论