您的位置 首页 golang

排序算法Golang实现之快速排序

基本原理

1.首先设定一个分界值,通过该分界值将数组分成左右两部分。

2.将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。

3.然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。

4.重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。

代码实现

 package sort

// Quick 快速排序
func Quick(nums []int, start, end int) {
if start >= end {
return
}

low, hight := start, end

pivot := nums[low]
for low < hight {
for low < hight {
if nums[hight] >= pivot {
hight--
continue
}

nums[low] = nums[hight]
break
}

for low < hight {
if nums[low] <= pivot {
low++
continue
}

nums[hight] = nums[low]
break
}

if low == hight {
nums[low] = pivot
}
}

Quick(nums, start, low-1)
Quick(nums, hight+1, end)

return
}
  

文章来源:智云一二三科技

文章标题:排序算法Golang实现之快速排序

文章地址:https://www.zhihuclub.com/98523.shtml

关于作者: 智云科技

热门文章

评论已关闭

2条评论

  1. of cognitive behavioral therapy to get back to joyful living after my melanoma dx in 1994 On April 29, 2020, The Warsaw Institute Review team held another expert debate Disinformation Russian Strategic Weapon Yesterday and Today

网站地图