go语言实现选择、冒泡、插入排序

选择排序是将排序无序数据集中的目的数据选择性的放入指定位置,即交换数据的位置

func SelectSortStrings(array []string) []string {
	if len(array) <= 1 {
		return array
	} else {
		for i := 0; i < len(array)-1; i++ { //最后一个元素不需要选择
			min := i //最小值的下标
			for j := i + 1; j < len(array); j++ {
				if strings.Compare(array[i], array[j]) > 0 { //字符串比较的标准方法
					min = j // 保存最小值的下标
				}
			}
			if i != min {
				array[i], array[min] = array[min], array[i] //后面有更大的数 进行交换
			}

		}
	}
	return array
}

冒泡排序就是将数据往后或是向前移动,达到指定的顺序

func BubbleSort(array []int) []int {
	length := len(array)
	if length <= 1 {
		return array
	} else {
		for i := 0; i < length-1; i++ { //最后一个元素不需要冒泡
			// 算法改进
			isneedchange := false //是否需要交换
			for j := 0; j < length-1-i; j++ {
				if array[j] > array[j+1] {
					array[j], array[j+1] = array[j+1], array[j]
					isneedchange = true
				}
			}
			if !isneedchange {
				break
			}
			fmt.Println(array)
		}
		return array
	}
}
// 插入排序
// 从乱序数据集中选取一个合适的目标值插入到有序数据集中去
func InsertSort(array []int) []int {
	length := len(array)
	if length <= 1 {
		return array
	} else {
		// 从数组的最后面进行数据的选择排序
		// for i := length - 2; i >= 0; i-- { //跳过第一个,认为只包含一个元素的数据集是有序的
		// 	backup := array[i] //备份插入的数据
		// 	j := i + 1
		// 	for j <= length-1 && backup > array[j] {
		// 		array[j-1] = array[j] //将数据从后往前移动
		// 		j++
		// 	}
		// 	array[j-1] = backup
		// 	fmt.Println(array)
		// }

		// 从数组的最前面进行数组的选择排序
		for i := 1; i < length; i++ {
			backup := array[i]
			j := i - 1
			for i >= 0 && backup < array[j] {
				array[j+1] = array[j]
				j--
			}
			array[j+1] = backup
		}

		return array
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值