社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
代码说明:
代码全部使用go语言实现,并且都是经过好几组数据测试通过,如有错,还请反馈下,谢谢。
图片说明:
图片和动画都是在百度搜索的,如有侵权,还望联系我删除,谢谢
我们从数组中选择一个元素,我们把这个元素称之为中间元素,然后把数组中所有小于中间元素的元素放在它的左边,所有大于或等于中间元素的元素放在它的右边,此时中间元素所处的位置的是有序的。也就是说,我们无需再移动中间元素的位置。
从中间元素那里开始把大的数组切割成两个小的数组(两个数组都不包含中间元素),接着我们通过递归的方式,让中间元素左边的数组和右边的数组也重复同样的操作,直到数组的大小为1,此时每个元素都处于有序的位置。
代码:
func QuickSort(array []int,low,high int){
if low >= high{
return
}
start := array[low]
i:= low
for j:= low+1;j<=high;j++{
if array[j]<=start{
i++
if i!=j{
array[i],array[j] = array[j],array[i]
}
}
}
array[i],array[low] = array[low],array[i]
QuickSort(array,low,i-1)
QuickSort(array,i+1,high)
}
性质:1、时间复杂度:O(nlogn) 2、空间复杂度:O(logn) 3、非稳定排序 4、原地排序
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!