快速排序demo

本文介绍了一个用Go语言实现的快速排序算法。通过递归方式将数组分为较小、相等和较大三部分,并最终合并得到有序数组。适用于初学者理解快速排序的基本原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package main

import (
    "fmt"
    "math"
)

/*
一、刚进来 arr = []int{1, 9, 10, 30, 2, 5, 45, 8, 63, 234, 12}
    反正就是不断的递归判断知道子元素为一个时输出进行拼接
*/

func QuickSort(arr []int, str string) []int {
    if len(arr) <= 1 { //直到判断数组剩下一个元素时直接返回结果,给到myarr拼接
        fmt.Println("arr++++*****", arr)
        return arr
    }
    key := int(math.Ceil(float64(len(arr) / 2)))
    splitdata := arr[key]        //第一个数据
    low := make([]int, 0, 0)     //比我小的数据
    hight := make([]int, 0, 0)   //比我大的数据
    mid := make([]int, 0, 0)     //与我一样大的数据
    mid = append(mid, splitdata) //加入一个
    for i := 0; i < len(arr); i++ {
        if arr[i] < splitdata {
            low = append(low, arr[i])
            // fmt.Println("小于", low, arr[i], arr[0], i)
        } else if arr[i] > splitdata {
            hight = append(hight, arr[i])
            // fmt.Println("大于", hight, arr[i], arr[0], i)
        }
    }
    fmt.Println("low++++", low)
    fmt.Println("mid++++", mid)
    fmt.Println("hight++++", hight)
    low, hight = QuickSort(low, "小于"), QuickSort(hight, "大于") //不断的递归
    fmt.Println("low++++", low)
    fmt.Println("mid++++", mid)
    fmt.Println("hight++++", hight)
    myarr := append(append(low, mid...), hight...)
    fmt.Println("myarr++++---------------------", myarr)
    return myarr
}

//快读排序算法
func main() {
    arr := []int{10, 9, 12, 5, 2, 4, 1}
    fmt.Println(QuickSort(arr, "结果"))
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值