您的位置:首页 > 编程语言 > Go语言

算法代码实现之三向切分快速排序,Golang(Go语言)实现

2016-02-29 21:34 1181 查看
封装成函数:

//三向切分快速排序
funcThreeWayQuickSort(s[]int){
sort3way(s,0,len(s)-1)
}
//在lt之前的(lo~lt-1)都小于中间值
//在gt之前的(gt+1~hi)都大于中间值
//在lt~i-1的都等于中间值
//在i~gt的都还不确定(最终i会大于gt,即不确定的将不复存在)
funcsort3way(s[]int,lo,hiint){
	iflo>=hi{
return
}
	v,lt,i,gt:=s[lo],lo,lo+1,hi
	fori<=gt{
		ifs[i]<v{
			swap(s,i,lt)
lt++
i++
}elseifs[i]>v{
			swap(s,i,gt)
gt--
}else{
i++
}
}
	sort3way(s,lo,lt-1)
	sort3way(s,gt+1,hi)
}
funcswap(s[]int,iint,jint){
	s[i],s[j]=s[j],s[i]
}

[/code]

测试:

s:=[]int{9,0,6,5,8,2,1,7,4,3}
fmt.Println(s)
ThreeWayQuickSort(s)
fmt.Println(s)


输出:

[9065821743]

[0123456789]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: