go实现一个快速排序

简介: go实现一个快速排序

package main

import "fmt"

func quickSort(arr []int, left, right int) {

if left < right {
    pivot := partition(arr, left, right)
    quickSort(arr, left, pivot-1)
    quickSort(arr, pivot+1, right)
}

}

func partition(arr []int, left, right int) int {

pivot := arr[right]
i := left - 1
for j := left; j < right; j++ {
    if arr[j] < pivot {
        i++
        arr[i], arr[j] = arr[j], arr[i]
    }
}
arr[i+1], arr[right] = arr[right], arr[i+1]
return i + 1

}

func main() {

arr := []int{5, 2, 9, 1, 5, 6}
quickSort(arr, 0, len(arr)-1)
fmt.Pr
intln(arr)

}

相关文章
|
1月前
|
Go 索引
go基础-6.for循环
go基础-6.for循环
|
3月前
|
算法 Go
Go 语言 实现冒泡排序
冒泡排序是大家熟知的经典算法。在Go语言中实现它,关键在于理解其核心思想:通过不断比较并交换相邻元素,让序列中的最大值像泡泡一样“浮”至顶端。每一轮比较都能确定一个最大值的位置。外层循环控制排序轮数,内层循环负责比较与交换。随着每轮排序完成,未排序部分逐渐缩小,直至整个数组有序。以下是Go语言实现示例及说明。
41 1
|
6月前
|
Go
[leetcode ~go]三数之和 M
[leetcode ~go]三数之和 M
|
Go
Go的镜像并查集
镜像并查集是一种优化了路径压缩的并查集数据结构。
82 0
|
6月前
|
搜索推荐 算法 Go
Go 排序算法实现
Go 排序算法实现
62 0
YI
|
Go
LeetCode 0283.移动零【Go】
LeetCode 0283.移动零【Go】
YI
51 0
YI
|
测试技术 Go 索引
LeetCode 0707.设计链表【Go】
LeetCode 0707.设计链表【Go】
YI
80 0
YI
|
机器学习/深度学习 Go
LeetCode 0059.螺旋矩阵II【Go】
LeetCode 0059.螺旋矩阵II【Go】
YI
70 0
|
算法 搜索推荐 Go
Go 实现选择排序算法及优化
本文简单介绍了什么是选择排序,然后通过图片的方式演示选择排序的过程,接下来是实现 O(N²) 时间复杂度的算法,最后优化算法,从结果来看,优化后的算法效率快了一倍,但是时间复杂度仍为 O(N²)。
108 1
Go 实现选择排序算法及优化
|
算法 搜索推荐 Go
Go 实现插入排序算法及优化
本文首先对插入排序进行简单地介绍,通过图片来演示插入排序的过程,然后使用 Go 语言实现插入排序的算法。为减少算法中交换次数的逻辑,对算法进行优化,将交换的逻辑变成把前面的数往后移,最后将待排序的数插入到合适的位置即可。 除了这种优化方式,还有一种改造方式:普通的算法往左查找的方式是线性查找,由于元素是有序的,因此线性查找可以换成二分查找,但是经过二分找到待插入的位置之后,也得移动前面的元素,相比上面的优化方法,还多了 O(logn) 的查找时间复杂度,因此我认为没有必要改造成二分查找。
196 1
Go 实现插入排序算法及优化