快速业务通道

Java中基于栈和队列的排序算法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
START_TWO;        max = stackTwo.pop();        sizeTwo--;        while (sizeTwo > 0) {          int value = stackTwo.pop();          if (value > max) {            stackOne.push(max);            max = value;          } else            stackOne.push(value);          sizeTwo--;          sizeOne++;        }        stackTwo.push(max);      }      // sizeOne和sizeTow中必然一个为0,一个为1      return (sizeOne > sizeTwo ? START_ONE : START_TWO);    }    public void printResult(int start) {      System.out.print("Result :");      if (start == START_ONE)        printStack(stackOne, stackTwo);      else        printStack(stackTwo, stackOne);      System.out.println();    }    private void printStack(IntStack one, IntStack two) {      while (one.empty() == false && two.empty() == false) {        System.out.print(one.pop() + " ");        System.out.print(two.pop() + " ");      }      if (one.empty() == false)        System.out.print(one.pop() + " ");    }    public static void main(String[] args) {      StackSort ssort = new StackSort(new int[] { 3, 1, 7, 1 });      ssort.printResult(ssort.sort());      ssort = new StackSort(new int[] { 3, 1, 9 });      ssort.printResult(ssort.sort());    } }

Java中基于栈和队列的排序算法(3)

时间:2011-04-13

3.队列的排序算法

每次循环取源队列数据,找出最大者加入目标队列,其余放回源队列,直到源队列空,排序完 成(这种算法适合于实现约瑟夫环).如果每次取出的最大值直接打印,则不需要额外辅助队 列.

3.1所使用的队列数据结构

import java.util.LinkedList; import java.util.Queue; public class IntQueue {    private Queue<Integer> storage = new LinkedList<Integer> ();    /** 将指定的元素插入队尾 */    public void offer(int v) {      storage.offer(v);    }    /** 检索,但是不移除队列的头,如果此队列为空,则返回 null */    public int peek() {      return storage.peek();    }    /** 检索并移除此队列的头,如果队列为空,则返回 null */    public int poll() {      return storage.poll();    }    /** 队列是否为空 */    public boolean empty() {      return storage.isEmpty();    }    /** 打印队列元素 */    public String toString() {      return storage.toString();    } }

3.2队列排序

public class QueueSort {    private IntQueue queueOne;    private IntQueue queueTwo;    private int size = 0;    public QueueSort(int[] ints) {      queueOne = new IntQueue();      queueTwo = new IntQueue();      init(ints, queueOne);    }    private void init(int[] ints, IntQueue queue) {      System.out.print("Original:");      for (int i : ints) {        System.out.print(i + " ");        queue.offer(i);        size++;      }      System.out.println();    }    public

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号