小弟以前只学过c 现在在上研究生的算法课,老师要求用java(完全没学过)实现归并排序n个正整数(输入包括键盘输入,文件重定位,剪贴复制)并提示数字出现的重复次数。输入第一行是整数的个数,输出第一行是不重复的整数的个数。
例子:
输入:
5
1
1
1
2
5
输出:
3
1 3
2 1
5 1
因为没学过java,我现在才到图书馆借了本core java 2来看。作业是3天后交,有点来不及。麻烦各位能指点一下~~~
非常感谢!!

解决方案 »

  1.   

    这是研究生的算法课吗????????????????????import java.util.HashMap;
    import java.util.InputMismatchException;
    import java.util.Map;
    import java.util.Scanner;/*
     * SortUniqueInt.java 10/06/2009
     *
     * Copyright 1999-2007 Bootstrap IT Ltd. All rights reserved.
     * BOOTSTRAP IT LIMITED PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
     *//**
     * @author Lei Gao. Bootstrap IT Ltd. 10/06/2009
     *
     */
    public class SortUniqueInt { /**
     * @param args
     */
    public static void main(String[] args) {

    Map<Integer, Integer> result = new HashMap<Integer, Integer>();

    Scanner input = new Scanner(System.in);
    try {
    int n = input.nextInt();
    while(n>0) {

    Integer number = input.nextInt();
    if(result.containsKey(number)) result.put(number, result.get(number)+1);
    else result.put(number, 1);
    n--;
    }

    System.out.println(result.size());
    for(Map.Entry<Integer, Integer> each : result.entrySet())
    System.out.println(each.getKey() + " "+ each.getValue());

    }catch (InputMismatchException e) {
    System.out.println("Wrong input, Integer type expected!");
    }
    }
    }
      

  2.   

    补充,以上代码没有排序。 只是打印出输入每个整数的个数。java中有自己的排序方法。但看题你好像要用归并排序,看来得自己写一个方法了。给你改了一个模板,mergeSort方法你自己完成吧。
    import java.util.HashMap;
    import java.util.InputMismatchException;
    import java.util.Map;
    import java.util.Scanner;public class SortUniqueInt { /**
     * @param args
     */
    public static void main(String[] args) {

    Map<Integer, Integer> result = new HashMap<Integer, Integer>();

    Scanner input = new Scanner(System.in);
    try {
    int n = input.nextInt();
    while(n>0) {

    Integer number = input.nextInt();
    if(result.containsKey(number)) result.put(number, result.get(number)+1);
    else result.put(number, 1);
    n--;
    }

    System.out.println(result.size());
    Integer[] sorted = mergeSort((Integer[])result.keySet().toArray());
    for(Integer each : sorted)
    System.out.println(each + " "+ result.get(each));

    }catch (InputMismatchException e) {
    System.out.println("Wrong input, Integer type expected!");
    }
    }

    public static Integer[] mergeSort(Integer[] array) {
    // implement your own merge sort algorithm
    return array;
    }
    }
      

  3.   

    感谢 主要是我太菜了 老师让我选个最简单的现在正在狂补java基础