在实现排序算法时候经常用到元素交换,以下用冒泡排序算法来解释在Go语言中交换元素的三种方式。
//冒泡排序
b:=[...]int{3,1,6,99,9}
(b)
num:=len(b)
for i:=0;i<num ;i++ {
for j:=i+1;j<num ;j++ {
if b[i]<b[j]{
temp:=b[i]
b[i]=b[j]
b[j]=temp
}
}
}
(b)
运行结果
[3 1 6 99 9]
[99 9 6 3 1]
这里就是使用到元素交换的第一种方法
使用temp存储一个值,
temp:=b[i]
b[i]=b[j]
b[j]=temp
第二种就是Go语言中特有的,
b[i],b[j]=b[j],b[i]
效率最佳,最易读。
第三种就有些难理解了,如果经常把成程序写成第三种就有一种装逼的嫌疑了。
b[i]=b[i]+b[j]
b[j]=b[i]-b[j]
b[i]=b[i]-b[j]