小萌新,找不出错误。就是想知道语句自己哪里弄错了。不是想用其他方法实现。
思路是从切片里第二开始和第一个比较,前面大的和后面小的交换位置。接着是第三个和第二个比,(不管交换或者没交换)第二个又和第一个比。然后又从第4个开始,一直到切片,最后一个元素,比到第一个结束。输出排列好的切片
![TIM图片20180820193621.png](https://static.studygolang.com/180820/423830adc984fae0db6cd78f32299ed6.png)
package main
import "fmt"
func main() {
s := []int{8, 1, 7, 5, 4, 9}
fmt.Println(s)
for i := 1; i < len(s); i++ {
fmt.Printf("第%d轮: -> \n", i)
for j := i; j > 0; j-- {
if s[j] < s[j-1] {
fmt.Printf("交换%d和%d ", s[j], s[j-1])
// swap(&s[j], &s[j-1])
s[j], s[j-1] = swap2(s[j], s[j-1])
} else {
fmt.Printf("无变化 ")
}
fmt.Println(s)
}
fmt.Printf(" <- 第%d轮\n\n", i)
}
}
func swap(a *int, b *int) {
*a, *b = *b, *a
}
func swap2(a int, b int) (m int, n int) {
return b, a
}
#3
更多评论
package main
import "fmt"
func main() {
var s = []int{8,1,7,5,49}
s[0], s[1] = s[1], s[0]
fmt.Println(s)
for y := len(s); y >= 0; y-- {
for z := 0; z < y-1; z++ {
if(s[z] > s[z+1]) {
s[z], s[z+1] = s[z+1], s[z]
}
}
}
fmt.Println(s)
}
#1