Go-选择排序

新手,如有错误,请指证,感谢🙏。求轻喷~~

package main

import (
	"fmt"
)

// 选择排序
// * 选择排序法思路:每次选择一个相应的元素,然后将其放到指定的位置
// * 实现思路:双重循环完成,外层控制轮数,当前的最小值。内层控制的比较次数

func main(){
	// 定义数据源
	mySlice := []int{1,43,54,62,21,66,32,78,36,76,39}
	// 计算切片长度
	length:=len(mySlice)
	// i:当前最小值的位置,需要参与比较的元素
	for i:=0;i<length-1;i++{
		// 先假设最小值的位置
		p := i
		// j:当前都需要和哪些元素比较,i后边的
		for j:=i+1;j<length;j++{
			// mySlice[p]是当前已知的最小值
			if mySlice[p]>mySlice[j] {
				// 比较,发现更小的,记录下最小值的位置;并且在西祠比较时,应采用已知的最小值进行比较
				p = j
			}
		}
		// 已经确定了当前的最小值,保存到p中。
		// 如果发现最小值的位置与当前 假设的位置i不同,则位置互换
		if p != i {
			tmp := mySlice[p]
			mySlice[p] = mySlice[i]
			mySlice[i] = tmp
		}
		//fmt.Println(mySlice)
	}
	fmt.Println(mySlice)
}

 

posted @ 2017-10-25 16:16  雪随冬行  阅读(230)  评论(0编辑  收藏  举报