比如我有一个字符串数组,里面有  {01,02,03,C3,C5,08,C6} 
虽然有数组函数sort但是不知道什么原因的放到服务器就会出错。现在寻求这种排序的方法

解决方案 »

  1.   

    数组的排序对int型基本类型的排序是快速排序,对object类型排序是归并排序。//快速排序
    class QuickSort{
    public static void sort(int[] table,int i,int j){
    int low = i;
    int high = j;
    if(i<j){
    int temp = table[i];
    while(i<j){
    while(i<j&&table[j]>temp)j--;
    if(i<j){table[i]=table[j];i++;}
    while(i<j&&table[i]<=temp)i++;
    if(i<j){table[j]=table[i];j--;}
    }
    table[i]=temp;
    sort(table,low,i-1);
    sort(table,i+1,high);
    }
    }
    //归并排序
    class MergeSort{
    //两路归并算法
    public static void merge(int[] source,int[]dest,int left,int mid,int right){
    int i=left,k=left,j=mid+1;
    while(i<=mid&&j<=right){
    if(source[i]<=source[j]){
    dest[k]=source[i];i++;k++;
    }
    else{
    dest[k]=source[j];
    j++;
    k++;
    }
    }
    while(i<=mid){
    dest[k]=source[i];
    k++;
    i++;
    }
    while(j<=right){
    dest[k]=source[j];
    k++;
    j++;
    }
    }
    //一趟归并算法
    public static void mergePass(int[] source,int[] dest,int len){
    int i=0;
    int j=source.length-1;
    while(i+2*len<=source.length-1){
    //注意判断条件和merge参数。
    merge(source,dest,i,i+len-1,i+2*len-1);
    i += 2*len;
    }
    if(i+len<=source.length-1){
    merge(source,dest,i,i+len-1,source.length-1);
    }
    else while(i<=source.length-1){
    dest[i]=source[i];
    i++;
    }
    }
    //真正的mergeSort
    public static void mergeSort(int[] table){
    int[] temp = new int[table.length];
    int d = 1;
    while(d<table.length){
    mergePass(table,temp,d);
    d*=2;
    mergePass(temp,table,d);
    d*=2;
    }
    }
      

  2.   

    String[] a = {"01","02","03","C3","C5","08","C6"};
    Arrays.sort(a);
    这样不行吗?