如 34,23,5 应该排列为 5,34,23
算法为: 先比较第一位数字 数字大的在前,如果相同按此规则比较下一位
当第一次发现有数字位数不够时,则比较较长数字的第一位和当前位,若第一位大则短数字在前,否则反之
以下是代码
public static String test(int[] values){ if(values.length == 1){ return ""+values[0]; } String[] strValues = new String[values.length]; int maxLength = 0; for(int i=0;i < values.length;i++){ strvalues[i]=String.valueOf(values[i]); if(strvalues[i].length() > maxLength){ maxLength = strValues[i].length(); } } for(int i=0;i < maxlength;i++){ sort(strvalues,i); } stringbuilder sb= new stringbuilder(); for(string v : strvalues){ sb.append(v).append(" "); } return sb.tostring(); } public static void sort(string[] strvalues,int index){ while(true){ boolean change=false; for(int i=0;i < strValues.length-1;i++){ string first=strValues[i]; second=strValues[i+1]; if(first.length() >= index+1 && second.length() >= index+1){ // 数值大的直接去前边 if(first.substring(0, index).equals(second.substring(0,index)) && Integer.valueOf(first.substring(index,index+1)) < Integer.valueOf(second.substring(index,index+1))){ strValues[i] = second; strValues[i+1] = first; change = true; }else if(first.substring(0, index).equals(second.substring(0,index)) && Integer.valueOf(first.substring(index,index+1)) == Integer.valueOf(second.substring(index,index+1))){ if(first.length()>second.length()){ strValues[i] = second; strValues[i+1] = first; change = true; } } }else if(first.length() ==index && second.length() >index){ if(second.startsWith(first)){ if(Integer.valueOf(second.substring(0,1)) < Integer.valueOf(second.substring(index,index+1))){ strValues[i] = second; strValues[i+1] = first; change = true; } } } } if(!change){ break; } } }