作为C++开发人员,冒泡算法还是很简单,换个语言,大致还是一样的;
还是啰嗦下逻辑思维:
假设原数据:[2 1 4 3 5 6 0]
以第一个元素为准,找出剩余元素中,比第一个元素小的,交替位置: [0 2 4 3 5 6 1]
以第二个元素为准,找出剩余元素中,比第二个元素小的,交替位置:[0 1 4 3 5 6 2]
以第三个元素为准,找出剩余元素中,比第三个元素小的,交替位置:[0 1 2 4 5 6 3]
以第四个元素为准,找出剩余元素中,比第四个元素小的,交替位置:[0 1 2 3 5 6 4]
以第五个元素为准,找出剩余元素中,比第五个元素小的,交替位置:[0 1 2 3 4 6 5]
以第六个元素为准,找出剩余元素中,比第六个元素小的,交替位置:[0 1 2 3 4 5 6]
ps:当然,最后一个元素不用于自己对比交替,没啥意义,可以自行优化,毕竟我写个例子,懒~
func BubbleSort(vData []int) {
len := len(vData)
BK:
for i := 0; i < len; i++ {
bBk := true
for j := i; j < len; j++ {
if vData[i] > vData[j] {
vData[i], vData[j] = vData[j], vData[i]
bBk = false
}
}
if bBk {
break BK
}
}
}