快速排序



1. 快速排序

2. 实现

func s(arr []int) interface{} {
	return sort(arr, 0, len(arr)-1)   // 排序的数组,0,总共键值
}

func sort(arr []int, l int, r int) interface{} {

	if l >= r{    // 递归终止条件
		return arr
	}
	p := partition(arr, l, r)   // 核心操作,传递数组,开头,结尾
	sort(arr, l, p-1)  // 递归调用 左边
	sort(arr, p+1, r)  // 同上
	return arr
}


func partition(arr []int, l int, r int) int {

	j := l   // 设置标定点
	for i:=j+1; i<=r; i++ {  // 循环除了标定点以外的数据
		if arr[i] < arr[l] {   // 数据比较 
			j++
			swap(arr, i, j)   // 数值翻转
		}
	}
	swap(arr, l, j)  // 最后将 l 与 j 进行翻转
	return j
}

func swap(arr []int, i int, j int) {
	t := arr[i]
	arr[i] = arr[j]
	arr[j] = t
}

func main () {
	arr := []int{9,4,7,2,5,6,3,8,1}   // 例子
	res := s(arr)   // 调用 s 方法
	fmt.Println(res)
}
posted @   linsonga  阅读(32)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示