ai学习
Agent = LLM(大模型)+ Planning(规划)+ Memory(记忆)+ Tools(工具)
jspackage main
import "fmt"
func quickSort(arr []int, low, high int) {
if low < high {
// 获取分区后的基准索引
pivotIndex := partition(arr, low, high)
// 递归排序左半部分
quickSort(arr, low, pivotIndex-1)
// 递归排序右半部分
quickSort(arr, pivotIndex+1, high)
}
}
func partition(arr []int, low, high int) int {
// 选择最右侧元素作为基准
pivot := arr[high]
i := low - 1 // i 指向小于基准的区域边界
for j := low; j < high; j++ {
// 如果当前元素小于或等于基准
if arr[j] <= pivot {
i++
// 交换元素
arr[i], arr[j] = arr[j], arr[i]
}
}
// 将基准值交换到中间正确的位置
arr[i+1], arr[high] = arr[high], arr[i+1]
return i + 1
}
func main() {
data := []int{34, 7, 23, 32, 5, 62}
fmt.Println("排序前:", data)
quickSort(data, 0, len(data)-1)
fmt.Println("排序后:", data)
}
题目描述
jspackage main
import (
"fmt"
)
// maxSubArray 求最大连续子数组和
func maxSubArray(nums []int) int {
if len(nums) == 0 {
return 0
}
currentSum := nums[0]
maxSum := nums[0]
for i := 1; i < len(nums); i++ {
// 当前和要么接着加,要么从当前元素重新开始
if currentSum < 0 {
currentSum = nums[i]
} else {
currentSum += nums[i]
}
// 更新最大值
if currentSum > maxSum {
maxSum = currentSum
}
}
return maxSum
}
func main() {
nums := []int{-2, 1, -3, 4, -1, 2, 1, -5, 4}
result := maxSubArray(nums)
fmt.Println("最大连续子数组和为:", result)
}