簡體   English   中英

使用LinkedList實現耐心排序

[英]Implementing Patience Sort with LinkedList

根據我的注釋,耐心排序將數據划分為多個bin,然后將這些bin的內容合並為一個完整列表。

我想我已大致了解如何執行此操作,但要求之一是為ints列表, stacks列表以及stack本身提供一個LinkedList

所以令我感到困惑的是,當LinkedList接受ints而不是stacks時,我如何add每個stack addLinkedList 我可以將LinkedList更改為接受stacks ,但是當我最初創建要在main方法中排序的列表時,它是使用ints完成的。

我知道我缺少明顯的東西,但是我看不到如何做到這一點,有什么建議嗎? 我在下面包括了我的sort方法,並注釋了一些有關如何完成事情的代碼(但我不確定是否正確)。

public void sort() {
    LinkedList listOfStacks = new LinkedList();
    //LinkedList<Stacks> listOfStacks = new LinkedList()<Stacks>;
    int [] listOfInts =  {8, 5, 3, 4, 1, 2, 6, 9, 7};

    for(int i = 0; i < listOfInts.length; i++) {
        LinkedList stack = new LinkedList();
        // No stacks initially, create first stack,
        // and add first element
        if(listOfStacks.getSize() == 0) {
            // listOfStacks.add(stack);
        }

        for(int j = 0; j < listOfStacks.getSize(); j++) {
            if(stack.getSize() == 0) {
                stack.push(listOfInts[i]);
                // listOfStacks.add(stack);
            }
            else if(stack.peek() < listOfInts[i]) {
                stack.push(listOfInts[i]);
                // listOfStacks.add(stack);
                break;
            }
            else {
                LinkedList newStack = new LinkedList();
                newStack.push(listOfInts[i]);
                // listOfStacks.add(newStack);
            }
        }
    }
}

與其嘗試將堆棧直接添加到鏈接列表中,不如將堆棧中的值彈出到鏈接列表中,直到堆棧為空。

或者,如果您可以聲明堆棧的鏈接列表以接受其他鏈接列表,而不是ints:

LinkedList<LinkedList<Integer>> listOfStacks = new LinkedList<LinkedList<Integer>>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM