2019-06-26  205 views 评论

鸡尾酒排序问题

 标签:

题目解释

鸡尾酒排序问题实际上是冒泡排序的一个改进。冒泡排序是一个单向的递增或者递减的交换排序,而鸡尾酒排序则是双向的,也就是说,如果我们以要求一个数组有n个数字从小到大排序,则:

  • 第一趟是正向排序,选出第n个值(最大值);
  • 第二趟是反向排序,选出第1个值(最小值);
  • 第三趟是正向排序,选出第n-1个值(次大值);
  • 第四趟是反向排序,先出第2个值(次小值)。

然后以此类推,最后得出整个序列,所以实际上就相当于将原来的冒泡排序有一段代码写成了两段。然后为了优化运行时间,所以设置一个标志位,当确定没有元素交换的时候,就自动停止运行输出结果。

代码实现

代码测试

当我们输入的数组为9,5,7,4,2,1,8,12,33,21,3时,输出结果为

de285197fc948bae7c46d7e1017173d0.png

给我留言

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: