go实现选择排序

选择排序的基本思想
第一次从R[0]~R[n-1]中选取最小值, 与R[0]交换,第二次从R[1]~R[n-1]中选取最小值, 与R[1]交换…
第i次c从R[i-1]~R[n-1]中选取最小值… 第n-1次从R[n-2]~R[n-1]中选取最小值, 与R[n-2]交换,总共通过
n-1次交换得到一个按排序码从小到大的有序排列

代码实现:

package main

import (
	"fmt"
)

func SelectSort(arr *[5]int) {
	//1 假设arr[0]最大值
	for j := 0; j < len(arr) - 1; j++ {	 
		max := arr[j]
		maxIndex := j

		//2.遍历后面1----【len[arr]-1】比较
		for i := j + 1; i < len(arr); i++ {
			if max < arr[i] {
				max = arr[i]
				maxIndex = i
			}
		}  

		//交换
		if maxIndex != j {
			arr[j], arr[maxIndex]  = arr[maxIndex], arr[j]  
		}
		fmt.Printf("第%d交换 %v\n", j, *arr)
	}
}

func main() {
	//定义一个数组,从小到大
	arr := [5]int{10, 34, 19, 100, 80}
	fmt.Println(arr)
	SelectSort(&arr)
	fmt.Println("main函数")
	fmt.Println(arr)
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值