go 递归实现快排
Posted x931890193
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go 递归实现快排相关的知识,希望对你有一定的参考价值。
package main import ( "fmt" ) func main() { arr := []int{1,2,5,8,7,4,3,6,9,0,12,13,45,78,89,56,23,11,12,23,56,89,79,46,13,00,11,22,11,22,33,66,88,77,44,44,11,10,26} //fmt.Println(len(arr)) fmt.Println(QuickSort(arr),len(QuickSort(arr))) } func QuickSort(arr []int)[]int{ if len(arr) ==0 { return []int{} } qmiddle := arr[0] qleft := QuickSort(QuickLeft(arr, qmiddle)) qright := QuickSort(QuickRight(arr,qmiddle)) return append(append(qleft,qmiddle),qright...) //list = append(slice, data) list = append(slice1, slice2...) ! } func QuickLeft(arr []int, qmiddle int)[]int{ leftarr := []int{} num := len(arr) for i:= 1; i < num; i++{ if arr[i] <= qmiddle{ leftarr = append(leftarr,arr[i]) } } return leftarr } func QuickRight(arr []int, qmiddle int)[]int{ rightarr := []int{} num := len(arr) for j:= 1; j < num; j++{ if arr[j] > qmiddle{ rightarr = append(rightarr,arr[j]) } } return rightarr }
以上是关于go 递归实现快排的主要内容,如果未能解决你的问题,请参考以下文章
8种面试经典排序详解--选择,插入,希尔,冒泡,堆排,3种快排及非递归,归并及非递归,计数(图+C语言代码+时间复杂度)
8种面试经典排序详解--选择,插入,希尔,冒泡,堆排,3种快排及非递归,归并及非递归,计数(图+C语言代码+时间复杂度)