golang list排序

最近用golang写了公司后台的数据处理服务,其中用到了list,需要对list中的元素进行排序,list自带的居然没这个功能,于是自己用选择排序实现了一下,为了方便后面Ctrl+C/V在此记录一下。

func main() {
   l := list.New()  // new一个list
   for i := 0; i < 10; i++ { // 插入0~9
   	l.PushFront(i)
   }
   // 前面是按照顺序插入,为了防止巧合,这里随便插入几个数字
   l.PushFront(100)  
   l.PushFront(0)
   l.PushFront(1000)
   for p := l.Front(); p != nil; p = p.Next() {
   	fmt.Print(p.Value, " ")
   }
   fmt.Println()
   for p := l.Front(); p != nil && p.Next() != nil; p = p.Next() {
   	for p := l.Front(); p != nil; p = p.Next() {
   		fmt.Print(p.Value, ",")
   	}
   	fmt.Println()
   	for t := p.Next(); t != nil; {
   		fmt.Println(p.Value,  "  ", t.Value)
   		if p.Value.(int) > t.Value.(int) {
   			tNext := t.Next()
   			l.MoveBefore(t, p)
   			p = t
   			t = tNext
   		} else {
   			t = t.Next()
   		}
   	}
   	fmt.Println()
   }
   for p := l.Front(); p != nil; p = p.Next() {
   	fmt.Print(p.Value, " ")
   }
   fmt.Println()
}

运行结果

1000 0 100 9 8 7 6 5 4 3 2 1 0 
1000,0,100,9,8,7,6,5,4,3,2,1,0,  第一次循环比较过程
1000    0
0    100
0    9
0    8
0    7
0    6
0    5
0    4
0    3
0    2
0    1
0    0

0,1000,100,9,8,7,6,5,4,3,2,1,0, 第二次循环比较过程
1000    100
100    9
9    8
8    7
7    6
6    5
5    4
4    3
3    2
2    1
1    0

0,0,1,2,3,4,5,6,7,8,9,100,1000,  第三次循环比较过程
1    2
1    3
1    4
1    5
1    6
1    7
1    8
1    9
1    100
1    1000

0,0,1,2,3,4,5,6,7,8,9,100,1000, 第四次
2    3
2    4
2    5
2    6
2    7
2    8
2    9
2    100
2    1000

0,0,1,2,3,4,5,6,7,8,9,100,1000, 第五次
3    4
3    5
3    6
3    7
3    8
3    9
3    100
3    1000

0,0,1,2,3,4,5,6,7,8,9,100,1000,
4    5
4    6
4    7
4    8
4    9
4    100
4    1000

0,0,1,2,3,4,5,6,7,8,9,100,1000,
5    6
5    7
5    8
5    9
5    100
5    1000

0,0,1,2,3,4,5,6,7,8,9,100,1000,
6    7
6    8
6    9
6    100
6    1000

0,0,1,2,3,4,5,6,7,8,9,100,1000,
7    8
7    9
7    100
7    1000

0,0,1,2,3,4,5,6,7,8,9,100,1000,
8    9
8    100
8    1000

0,0,1,2,3,4,5,6,7,8,9,100,1000,
9    100
9    1000

0,0,1,2,3,4,5,6,7,8,9,100,1000, 最后一次比较
100    1000

0,0,1,2,3,4,5,6,7,8,9,100,1000,

0 0 1 2 3 4 5 6 7 8 9 100 1000  比较结果
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值