首页 > 代码库 > 简单算法系列:快速算法/冒泡算法两则
简单算法系列:快速算法/冒泡算法两则
工作较忙,没办法抽出时间专心攻克《Go语言编程》,随着了解的更多,越发体会出这本书中小例子的精巧。
掌握这些小例子,就可以完成Go基础的全面掌握
最近抽出时间专心敲这些例子。但是发现一些问题,在设计上,许大大的算法可能更难让我理解一点。特对关于二章中结尾例子中算法,写出自己的算法,较之,我自己写的,更方便自己理解。
/*
快速排序算法
*/
func quicSort(values []int){
if len(values) <= 1{
return
}
mid, i := values[0], 1 //首值做关键值,且抽出数组中的第二个键值,方便比对
head, tail := 0, len(values) - 1 //抽出第一个键值,还有数组的数量
for head < tail {
if mid < values[i] {
values[i], values[tail] = values[tail], values[i] //比它大的,就往后扔
tail-- //往后扔一个,就少扔一次
}else{
values[head], values[i] = values[i], values[head]//比它小的,就往前扔
head++//往前扔一个,也少扔一次
i++//比对的键值,进行+1
}
}
values[head] = mid//此时关键值,应当就在head这个键值上
quicSort(values[:head])//递归
quicSort(values[head + 1:])//递归
}
/*
冒泡算法
*/
func bubbleSort(values []int){
for i := 0; i < len(values); i++ {
for z := i + 1; z < len(values); z++ {
if values[i] > values[z]{
values[i], values[z] = values[z], values[i]
}
}
}
}
冒泡算法比较简单,就不做介绍了,就是从头算到尾。
简单算法系列:快速算法/冒泡算法两则
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。