1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| package quickSortV1
import ( "InterviewQuestions/Algo/sort" "fmt" )
func QuickSort(nums []int) []int { quickSort(nums, 0, len(nums)-1) return nums }
func quickSort(nums []int, low int, high int) { var pivotkey int if low < high { pivotkey = partition(nums, low, high) quickSort(nums, low, pivotkey-1) quickSort(nums, pivotkey+1, high) } }
func partition(nums []int, low int, high int) int { dummy := nums[low] for low < high { for low < high && dummy <= nums[high] { high-- } swap(nums, low, high) for low < high && dummy > nums[low] { low++ } swap(nums, low, high) } return low }
func swap(nums []int, i int, j int) { nums[i], nums[j] = nums[j], nums[i] }
func main() {
fmt.Println(QuickSort(sort.RandArray(100))) }
|