在java中使用堆栈排序算法

时间:2018-05-31 10:33:24

标签: java

我试图使用堆栈对元素进行排序。我做的一切,但我没有git输出排序.. 我的代码:

    Scanner oman= new Scanner(System.in);


    System.out.println(" Enter the size of stack: ");
    int stackSize = oman.nextInt();


    Stack<Integer> stack = new Stack<Integer>();
    for(int i = 0; i < stackSize; i++){

        System.out.println("Enter the number : ");
        int number = oman.nextInt();

         System.out.println("The Number is entered in the stack. ");
         stack.push(number);
    }

    while (!(stack.isEmpty())) {
        System.out.println(stack.pop());

    }

示例:

Input

Enter the size of stack: 3
Enter the First Number :10
Enter the Second Number : 5
Enter The T hired Number : 20 

Output

3
5
10
20
像这样

2 个答案:

答案 0 :(得分:0)

提示:你需要2个堆栈。

  • 第一个堆栈包含正确顺序的元素
  • 第二个堆栈包含相反顺序的元素...暂时...当你找到正确的位置将它们推到第一个堆栈上时。

提示2:这是一个谜题:

  1. 将一张卡片切成N张卡片。在卡片上写下数字1到N.
  2. 洗牌。将它们放在一个名为I的堆中(用于输入)。
  3. 使用两个名为S(用于排序)和T(用于临时)的额外堆,将所有卡从I移至S,具有以下约束:

    • 你只能将一张牌从一堆的顶部移到另一堆的顶部。
    • 您无法将卡片移到I堆上。
    • 完成后,堆S必须包含1 ...到N的所有卡片。
  4. 如果你能解决这个难题,你已经开发了一个算法,用于使用堆栈进行排序。

答案 1 :(得分:-1)

排序代码在哪里?我建议你在将它们推入堆栈之前比较这些元素。仅当元素大于堆栈中的顶部元素时才推送元素。 (即10位于堆栈的顶部。接下来是5.现在你比较5和10. 10更大,所以弹出它并推5.然后推10.接下来是20.它大于10所以你推它)