go语言快速排序Quick sort

本文介绍了一种使用Go语言实现的快速排序算法。通过生成一个包含随机整数的数组,并展示排序前后数组的变化来演示算法的工作原理。文章还提供了完整的Go代码示例,包括数组打印和快速排序的实现。

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

package main

import (
       "fmt"
       "math/rand"
)

var TOT = int(20)

func main() {
       var arry []int
       for i:= 0; i < TOT; i++{
              arry = append(arry, rand.Intn(TOT))
       }
       fmt.Println("Before sort arry:")
       pfarry(arry)
       quicksort(arry)
       fmt.Println()
       fmt.Println("After sort arry:")
       pfarry(arry)
}

func pfarry (list []int){

       len := int(1)
       for total := TOT; total > 0; total /= 10 {
              len ++
       }
       for i := 0; i < TOT; i++{
              fmt.Printf("%*d", len, list[i])
       }
}

func  quicksort(list []int)  {
       l:= len(list)
       if l <= 1{
              return
       }
       b := 0;
       e := l - 1
       key := list[e/2]

       for {
              for list[b] < key{
                     b++
              }
              for list[e] > key {
                     e--
              }
              if b >= e {
                     break
              }
              swap(list, b, e)

              b++;e--               //每次较换后向后取值,否则(切片中有相同值时)会出现死循环
       }
       quicksort(list[:b])
       quicksort(list[e+1:])
}

func  swap(list []int, a, b int)  {
       list[a], list[b] = list[b] ,list[a]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值