Go语言快速排序算法实现:代码示例及解析
快速排序是一种常见的排序算法,它的时间复杂度为O(nlogn)。下面是使用Go语言实现快速排序的代码:
package main
import "fmt"
func quickSort(arr []int, left, right int) {
if left >= right {
return
}
pivot := arr[left]
i, j := left, right
for i < j {
for i < j && arr[j] >= pivot {
j--
}
arr[i] = arr[j]
for i < j && arr[i] <= pivot {
i++
}
arr[j] = arr[i]
}
arr[i] = pivot
quickSort(arr, left, i-1)
quickSort(arr, i+1, right)
}
func main() {
arr := []int{3, 1, 4, 2, 5, 7, 6, 8}
quickSort(arr, 0, len(arr)-1)
fmt.Println(arr)
}
在上面的代码中,我们定义了一个quickSort函数来实现快速排序。该函数接受一个整数切片arr,以及切片中的左边界left和右边界right,表示我们要对arr[left...right]进行排序。
首先,我们选择arr[left]作为枢轴元素,然后定义两个指针i和j,分别从左右两端开始扫描。指针j向左移动直到找到第一个小于枢轴元素的元素,指针i向右移动直到找到第一个大于枢轴元素的元素,然后交换这两个元素的位置。重复这个过程直到i和j相遇,此时我们把枢轴元素放到它们相遇的位置,然后把整个数组拆分成两个部分,分别对它们进行快速排序。最后,将两个排序后的数组合并起来,就得到了最终的排序结果。
在main函数中,我们定义一个整数切片arr,然后调用quickSort函数对它进行排序。最后,打印排序后的结果。
原文地址: https://www.cveoy.top/t/topic/lKNQ 著作权归作者所有。请勿转载和采集!