要求不明确,是m个数中的随机的n个数,还是由大到小的n个数,还是无所谓呢?

解决方案 »

  1.   

    一个很简单的排序算法:package test1;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * @author Jack
     * @version 1.0
     */public class testA {    public testA() {
        }
        public static void main(String[] args) {
          testA test = new testA();
          long[] counts = {5,1,3,4,8};
          long[] newCounts = new long[5];
          newCounts = test.sort(counts,4);
          for(int i = 0;i<newCounts.length;i++){
            System.out.println(newCounts[i]);
          }
        }    public long[] sort(long[] counts,int orderCount){
          long tmp;
          for(int i=0;i<counts.length-1;i++){
            for(int j=i+1;j<counts.length;j++){
              if(counts[j]<counts[i]){
                tmp = counts[i];
                counts[i] = counts[j];
                counts[j] = tmp;
              }
            }
          }
          long[] newCounts = new long[orderCount];
          for(int i=0;i<orderCount;i++){
            newCounts[i] = counts[i];
          }      return newCounts;
        }
    }
      

  2.   

    这种情况最好用插入排序:(我只给算法,自己修改一下就可实现)
    void SortProcedure()
    {
     int pass,i,temp;
     for(pass=1;pass<DataArray.length;pass++)
     {
      temp=DataArray[pass];
      for(i=pass-1;i>0;i--)
      {
       if (DataArray[i]<=temp)
         break;
       else
         DataArray[i+1]=DataArray[i];
       }
       DataArray[i+1]=temp;
      for (i=0;i<DataArray.length;i++)
      {
       SortPro[pass][i]=DataArray[i];
      }
     }
    }
      

  3.   

    给出各种排序的方法:(本程序用了效率较高的二分排序法)
    请自行分析该程序。/* 此类定义了一些用于Strings和其他对象高效排序的静态方法
     * 还定义了两个接口,可提供对要排序对象进行比较的两种不同方法
     */
    import java.text.Collator;
    import java.text.CollationKey;
    import java.util.Locale;public class Sorter {
      public static interface Comparer {
        public int compare(Object a,Object b);
      }  public static interface Comparable {
        public int compareTo(Object other);
      }  private static Comparer ascii_comparer=new Comparer() {
        public int compare(Object a,Object b) {
          return ((String)a).compareTo((String)b);
        }
      };  private static Comparer comparable_comparer=new Comparer() {
        public int compare(Object a,Object b) {
          return ((Comparable)a).compareTo(b);
        }
      };  public static void sortAscii(String[] a) {
        sort(a,null,0,a.length-1,true,ascii_comparer);
      }  public static void sortAscii(String[] a,int from,int to,boolean up) {
        sort(a,null,from,to,up,ascii_comparer);
      }  public static void sortAsciiIgnoreCase(String[] a) {
        sortAsciiIgnoreCase(a,0,a.length-1,true);
      }  public static void sortAsciiIgnoreCase(String[] a,int from,int to,boolean up) {
        if((a==null)||(a.length<2)) return;
        String b[]=new String[a.length];
        for(int i=0;i<a.length;i++) b[i]=a[i].toLowerCase();
        sort(b,a,from,to,up,ascii_comparer);
      }  public static void sort(String[] a) {
        sort(a,0,a.length-1,true,false,null);
      }  public static void sort(String[] a,int from,int to,boolean up,boolean ignorecase) {
        sort(a,from,to,up,ignorecase,null);
      }  public static void sort(String[] a,int from,int to,boolean up,boolean ignorecase,Locale locale) {
        if((a==null)||(a.length<2)) return;
        Collator c;
        if(locale==null) c=Collator.getInstance();
        else c=Collator.getInstance(locale);
        if(ignorecase) c.setStrength(Collator.SECONDARY);
        CollationKey[] b=new CollationKey[a.length];
        for(int i=0;i<a.length;i++) b[i]=c.getCollationKey(a[i]);
        Comparer comp=new Comparer() {
          public int compare(Object a,Object b) {
            return ((CollationKey)a).compareTo((CollationKey)b);
          }
        };
        sort(b,a,from,to,up,comp);
      }  public static void sort(Comparable[] a) {
        sort(a,null,0,a.length-1,true);
      }  public static void sort(Comparable[] a,int from,int to,boolean up) {
        sort(a,null,from,to,up,comparable_comparer);
      }  public static void sort(Comparable[] a,Object[] b,int from,int to,boolean up) {
        sort(a,b,from,to,up,comparable_comparer);
      }  public static void sort(Object[] a,Comparer c) {
        sort(a,null,0,a.length-1,true,c);
      }  public static void sort(Object[] a,int from,int to,boolean up,Comparer c) {
        sort(a,null,from,to,up,c);
      }  public static void sort(Object[] a,Object[] b,int from,int to,boolean up,Comparer c) {
        if((a==null)||(a.length<2)) return;
        int i=from,j=to;
        Object center=a[(from+to)/2];
        do {
            if(up) {
              while((i<to)&&(c.compare(center,a[i])>0)) i++;
              while((j>from)&&(c.compare(center,a[j])<0)) j--;
            } else {
              while((i<to)&&(c.compare(center,a[i])<0)) i++;
              while((i>from)&&(c.compare(center,a[j])>0)) j--;
            }
            if(i<j) {
              Object tmp=a[i]; a[i]=a[j]; a[j]=tmp;
              if(b!=null) { tmp=b[i]; b[j]=b[j]; b[j]=tmp; }
            }
            if(i<=j) { i++; j--; }
         } while(i<=j);
             if(from<j) sort(a,b,from,j,up,c);
             if(i<to) sort(a,b,i,to,up,c);
      }  public static class Test {
        static class SortableComplexNumber extends ComplexNumber implements Sorter.Comparable {
          public SortableComplexNumber(double x,double y) { super(x,y); }
          public int compareTo(Object other) {
            return sign(this.magnitude()-((ComplexNumber)other).magnitude());
          }
        }    public static void main(String[] args) {
          SortableComplexNumber[] a=new SortableComplexNumber[5];
          for(int i=0;i<a.length;i++)
            a[i]=new SortableComplexNumber(Math.random()*10,Math.random()*10);
          System.out.println("Sortde by magnitude:");
          Sorter.sort(a);
          for(int i=0;i<a.length;i++) System.out.println(a[i]);
          System.out.println("Sorted by sum of real and imaginary parts:");
          Sorter.sort(a,new Sorter.Comparer() {
                 public int compare(Object a,Object b) {
                     ComplexNumber i=(ComplexNumber)a;
                     ComplexNumber j=(ComplexNumber)b;
                     return sign((i.real()+i.imaginary())-(j.real()+j.imaginary()));
                 }
            });
          for(int i=0;i<a.length;i++) System.out.println(a[i]);
          System.out.println("Sorted descending by real,then imaginary:");
          Sorter.sort(a,0,a.length-1,false,new Sorter.Comparer() {
                 public int compare(Object a,Object b) {
                     ComplexNumber i=(ComplexNumber) a;
                     ComplexNumber j=(ComplexNumber) b;
                     double result=i.real()-j.real();
                     if(result==0) result=i.imaginary()-j.imaginary();
                     return sign(result);
                 }
            });
          for(int i=0;i<a.length;i++) System.out.println(a[i]);
        }
        public static int sign(double x) {
          if(x>0) return 1;
          else if(x<0) return-1;
          else return 0;
        }
      }
    }
      

  4.   

    ComplexNumber 这个类在哪儿定义的呢
      

  5.   

    这年头还有问这个的! 你是为了叫作业还是真的要排序啊!
    如果是后者,建议用
    Arrays.sort()
    试试。