日期:2014-05-20  浏览次数:20793 次

java新手求助算法问题
1)N个已经排序好的数组,每个数组有M个数字,给出一个算法把这N个数组合并成一个排好序的大数组,并分析该算法的时间和空间复杂度。
 
2)写一个Java函数最高效的实现字符串倒序(不能直接使用类库API)。
 
3)用Java数组实现一个先进先出的Queue。

求牛人解答

------解决方案--------------------
用数组实现一个先进先出的queue

Java code

public class Queue
{

    private static final int DEFAULT = 10;

    private Object[] queue;

    /**
     * 数组的长度
     */
    private int length = 0;

    /**
     * 当前存储了多少数据
     */
    private int size = 0;

    public Queue()
    {
        queue = new Object[DEFAULT];
        length = DEFAULT;
    }

    public Queue(int length)
    {
        queue = new Object[length];
        this.length = length;
    }

    public void set(Object obj)
    {
        if (size >= length)
        {
            Object[] newQueue = new Object[length + DEFAULT];
            System.arraycopy(queue, 0, newQueue, 0, length);
            length = length + DEFAULT;
            queue = newQueue;
        }
        queue[size] = obj;
        size++;
    }

    public Object get()
    {
        Object object = queue[0];
        size--;
        for (int i = 0; i < size; i++)
        {
            queue[i] = queue[i + 1];
        }
        queue[size] = null;
        return object;
    }

    public int size()
    {
        return size;
    }

}

------解决方案--------------------
Stack s = new Stack();
char[] chars = "zhouyongyang".toCharArray();
int length = chars.length;
StringBuffer ss= new StringBuffer();
for(int i = 0; i < length; i++)
{
s.add(chars[i]);
}
for(int i = 0; i < chars.length; i++)
{
ss.append(s.pop());
}

这很快,,,我测试过了,,,当字符串大时,,,要比11楼的快几十部可能会更大