import "fmt"
// 快速排序,第一步随便找个分界点,采用分治思想
// 第二步:找两个指针分别指向首位,采取比较分界点而移动指针的方式,交叉后交换位置
// 第三步:分成的两个区域进行递归
func QuickSort(arr []int, start int, end int) {
if start < 0 || start >= end {
return
}
intermediate := arr[start]
i := start - 1
j := end + 1
for i < j {
for {
i++
if arr[i] >= intermediate {
break
}
}
for {
j--
if arr[j] <= intermediate {
break
}
}
if i < j {
arr[i], arr[j] = arr[j], arr[i]
}
}
QuickSort(arr, start, j)
QuickSort(arr, j+1, end)
}
func StartQuickSort() {
var length int
fmt.Scan(&length)
var arr []int
for i := 0; i < length; i++ {
var q int
fmt.Scan(&q)
arr = append(arr, q)
}
fmt.Println(arr)
QuickSort(arr, 0, length-1)
fmt.Println(arr)
}
go语言实现快速排序
最新推荐文章于 2024-06-13 10:18:16 发布