2016-02-12 82 views
0

enter image description here最大可能數而循環迭代

我的回答是46(不記得我是如何得到它)。我按降序排列了一個數組,並進行了模擬。

來源:GATE-CS 2016問題

+0

我覺得這樣緊張:你能打擾打字嗎? (使用塊引用)。您所拍攝的照片與您呈現的照片之間有什麼聯繫? – greybeard

+0

我投票結束這個問題作爲題外話,因爲只是要求以這種方式確認不是一個有趣的問題。 – starblue

+0

@starblue:OP不只是要求確認。另一方面,他被視爲表現出他所做的努力,他所做的。這個問題看起來並不重要,所以我不支持downvotes。 –

回答

2

這是一個排序設備。

它旋轉隊列(通過堆棧),直到最小的元素被推入堆棧。然後,最小的元素保持在那裏。

該過程繼續進行,剩下的N-1個元素依此類推。

如果隊列初始排序,則循環執行N次。

如果隊列最初按降序排序,則循環執行2N-1 + 2N-3 + ... + 1 = N 2次,這是最壞的情況。

0

當我在Java運行這個程序,我得到256數組按降序排列。

int count=0; 
    int[] q = new int[] {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; 
    Queue<Integer> queue = new LinkedList<Integer>(); 
    Stack<Integer> stack = new Stack<Integer>(); 
    for(int a : q) 
    { 
     queue.add(a); 
    } 
    while(!queue.isEmpty()) 
    { 
     if(stack.isEmpty() || stack.peek() <= queue.peek()) 
     { 
      Integer x=queue.remove(); 
      stack.push(x); 
     } 
     else 
     { 
      Integer x=stack.pop(); 
      queue.add(x); 
     } 
     count++; 
    } 
    System.out.println(count);