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)

}

相关文章
|
20天前
|
Go
[leetcode ~go]三数之和 M
[leetcode ~go]三数之和 M
|
5月前
|
搜索推荐 算法 Go
Go 排序算法实现
Go 排序算法实现
37 0
|
8月前
|
存储 人工智能 架构师
Go开始:Go基本元素介绍
Go开始:Go基本元素介绍
60 0
|
9月前
|
算法 Java Go
Go的span算法
MMSpan是Go语言垃圾回收器中的一个重要概念,它用于管理和跟踪堆内存的分配和释放。
59 0
YI
|
10月前
|
Go
LeetCode 0283.移动零【Go】
LeetCode 0283.移动零【Go】
YI
36 0
YI
|
10月前
|
机器学习/深度学习 Go
LeetCode 0059.螺旋矩阵II【Go】
LeetCode 0059.螺旋矩阵II【Go】
YI
47 0
YI
|
10月前
|
测试技术 Go 索引
LeetCode 0707.设计链表【Go】
LeetCode 0707.设计链表【Go】
YI
48 0
|
存储 Go
Go基础练习题 附讲解
Go基础练习题 附讲解
|
算法 搜索推荐 Go
Go 实现选择排序算法及优化
本文简单介绍了什么是选择排序,然后通过图片的方式演示选择排序的过程,接下来是实现 O(N²) 时间复杂度的算法,最后优化算法,从结果来看,优化后的算法效率快了一倍,但是时间复杂度仍为 O(N²)。
77 1
Go 实现选择排序算法及优化
|
算法 搜索推荐 Go
Go 实现插入排序算法及优化
本文首先对插入排序进行简单地介绍,通过图片来演示插入排序的过程,然后使用 Go 语言实现插入排序的算法。为减少算法中交换次数的逻辑,对算法进行优化,将交换的逻辑变成把前面的数往后移,最后将待排序的数插入到合适的位置即可。 除了这种优化方式,还有一种改造方式:普通的算法往左查找的方式是线性查找,由于元素是有序的,因此线性查找可以换成二分查找,但是经过二分找到待插入的位置之后,也得移动前面的元素,相比上面的优化方法,还多了 O(logn) 的查找时间复杂度,因此我认为没有必要改造成二分查找。
153 1
Go 实现插入排序算法及优化