日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

左神算法:用一个栈实现另一个栈的排序(Java版)

發布時間:2024/2/28 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 左神算法:用一个栈实现另一个栈的排序(Java版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本題源自左神《程序員面試代碼指南》“用一個棧實現另一個棧的排序”題目。

題目

在一個棧中元素的類型為整型,現在想將該棧從棧頂到棧底按從大到小的順序排序,只許申請一個棧,除此之外,可以申請其他變量,但是不能申請額外的數據結構。

解答

將待排序的棧記為 stack, 輔助棧記為 help。 在 stack 上執行 pop 操作,彈出的元素記為 cur。

  • 如果 cur 小于等于 help 的棧頂元素,則將 cur 直接壓入 help
  • 如果 cur 大于 help 的棧頂元素,則將 help 的元素逐一彈出,逐一壓入 stack,直到 cur 小于或等于 help 的棧頂元素,再將 cur 壓入 help

一直執行以上操作,直到 stack 中的全部元素都壓入到 help 棧中(此時從棧頂到棧底:有小到大),最后將help棧中的元素逐一壓入stack,即可完成排序。

代碼

import java.util.Stack;public class Main {public static void sortStackByStack(Stack<Integer> stack) {Stack<Integer> help = new Stack<Integer>();while (!stack.isEmpty()) {int cur = stack.pop();while (!help.isEmpty() && help.peek() < cur) {stack.push(help.pop());}help.push(cur);}while (!help.isEmpty()) {stack.push(help.pop());}}public static void main(String[] args) {Stack<Integer> stack = new Stack<Integer>();stack.push(3);stack.push(1);stack.push(6);stack.push(2);stack.push(5);stack.push(4);sortStackByStack(stack);System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());} }

輸出:

6 5 4 3 2 1

總結

以上是生活随笔為你收集整理的左神算法:用一个栈实现另一个栈的排序(Java版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。