数据结构与算法:四大排序

数据结构与算法:四大排序

main方法

type Arr struct {
	array [10]int
}
func main() {
	var arr = &Arr{}
	for i := 0; i < len(arr.array); i++ {
		arr.array[i] = rand.Intn(15)
	}
	fmt.Println(arr.array)
	// 冒泡排序 从第0个元素开始与其后面所有的元素逐一比较
	//BoobleSort(arr)
	// 选择排序 从[0~n]中取最小值与1替换 --> 从[(n-1) ~ n]中取最小值与(n-)替换
	//SelectSort(arr)
	// 插入排序 将arr[0]与arr[1~n]看出两个数组,逐次从后者中拿出元素与前者比较,且插入相应位置
	//InsertSort(arr)
	// 快速排序
	//QuickSort(arr,0,length(arr.array)-1)

	fmt.Println(arr.array)

}

冒泡排序

func BoobleSort(arr *Arr) {
	for i := 0; i < len(arr.array)-1; i++ {
		for j := 0; j < len(arr.array)-1; j++ {
			if arr.array[j] >= arr.array[j+1] {
				arr.array[j+1],arr.array[j] = arr.array[j],arr.array[j+1]
			}
		}
	}
}

选择排序

func SelectSort(arr *Arr) {
	for i := 0; i < len(arr.array); i++ {
		index := i
		for j := i; j < len(arr.array); j++ {
			if arr.array[index] >= arr.array[j] {
				index = j
			}
		}
		arr.array[i],arr.array[index] = arr.array[index] ,arr.array[i]
	}
}

插入排序

func InsertSort(arr *Arr) {
	for i := 0; i < len(arr.array); i++ {
		for j := 0; j < i; j++ {
			var tmp int
			if arr.array[j] >= arr.array[i] {
				tmp = arr.array[i]
				arr.array[i] = arr.array[j]
				arr.array[j] = tmp
			}
		}
	}
}

快速排序

func QuickSort(arr *Arr, left int, right int) {
	l := left
	r := right
	mid := arr.array[(left+right)/2]
	for ; l < r; {
		for ; arr.array[l] < mid; {
			l++
		}
		for ; arr.array[r] > mid; {
			r--
		}
		if l >= r {
			break
		}
		arr.array[l], arr.array[r] = arr.array[r], arr.array[l]
		//fmt.Println(mid,l, r, arr.array)
		if arr.array[l] == mid {
			r--
		}
		if arr.array[r] == mid {
			l++
		}
	}
	if l == r {
		l++
		r--
	}
	if left < r {
		QuickSort(arr, left, r)
	}
	if right > l {
		QuickSort(arr, l, right)
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值