如何在java中对队列进行排序?

时间:2013-11-20 16:49:28

标签: java algorithm sorting

您不能创建新的数据结构。

注意:这不是一个家庭作业问题,我正在准备面试,我遇到了这个问题

3 个答案:

答案 0 :(得分:5)

1. Pop two elements from the queue.  
2. Compare them.  
3. Push the lesser one in the queue.  
4. Pop another element.
5. Keep repeating from step no. 2.  
6. After n-1 comparisons, you will get the largest element in the queue. 
7. Push it and repeat the above n-1 times. At each iteration, you need to make one less comparison as the last element is already the maximum.

这将按降序对队列进行排序。对于升序,只需反转比较结果。

注意:上述算法不完整,缺少一小步。我把它留给你识别并修复。

答案 1 :(得分:2)

假设take从队列前面获取一个元素,offer将一个元素插入到队列的前面。

sort q :
   return if q is empty
   a = take q
   sort q
   insert a q

insert a q:
    if q is empty
      offer q a
      return
    b = take q
    if a < b
      offer q b
      offer q a
      return
    insert a q
    offer q b
    return

答案 2 :(得分:0)

  1. poll()和offer()逐个每个对象(.size()次)并保存最小值(当前最小值

  2. poll()并逐个提供()每个对象,并在当前最小值之后扫描下一个更大的对象。如果你找不到下一站 -

  3. poll()和offer()一个接一个,直到您在当前最低之后提供,不要轮询

  4. 逐句
  5. poll()和offer(),直到您推荐当前最低

  6. 在当前最低要求之后,你追踪。这是你现在的最低要求。转到第2步