比如字符串 "16a52Bc97",排序后为"12a56Bc79",该怎麽实现?

解决方案 »

  1.   


    public static void swap(int i,int j,char[] arr){
    char temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
    }
    public static void main(String[] args) throws Exception {
     String str = "16a52Bc97";//排序后为"12a56Bc79"
     char[] arr = str.toCharArray();
     for(int i=0;i<arr.length;i++){
     int preChar = arr[i];
     if( preChar < '0' || preChar > '9'){
     continue;
     }
     for(int j=i+1;j<arr.length;j++){
     int nextChar = arr[j];
     if(nextChar < '0' || nextChar > '9'){
     continue;
     }
     if(preChar > nextChar){
     swap(i,j,arr);
     }
     }
     }
     System.out.println(new String(arr));
    }
      

  2.   

    class  StringSort
    {
    public static void main(String[] args) 
    {
    String str = "31a5B80Z6"; char[] arr = str.toCharArray(); for(int x = 0;x<arr.length-1;x++){
    for(int y = x+1;y<arr.length;y++){

    if(arr[x]<'0'||arr[x]>'9'){
    continue;
    }else if(arr[y]<'0'||arr[y]>'9'){
    continue;

    }else if(arr[x]>arr[y]){
    char temp = arr[x];
    arr[x] = arr[y];
    arr[y] = temp;
    }
    }

    }

    System.out.println(new String(arr));
    }
    }
    跟三楼的思想一样 选择排序,冒泡貌似不行 简化了一下