有以下一组字符串
13-1、13-108、13-18、100-11、10-15、14-2、14-1
编写程序,先按照前半部分的数字进行排序,再按照后半部分的数字进行排序,最终输出要为:
10-15、13-1、13-18、13-108、14-1、14-2、100-11
核心代码:
String []s=new String[]{"13-1","13-108","13-18","100-11","10-15","14-2","14-1"}; int a[][]=new int[s.length][2]; String s1[]=new String[s.length]; String s2[]=new String[s.length]; for(int i=0;i<s.length;i++){ s1[i]=s[i].substring(0, s[i].indexOf("-",0)); s2[i]=s[i].substring(s[i].indexOf("-",0)+1,s[i].length()); //把字符串转化成int类型进行排序 //System.out.println(s1[i]+" "+s2[i]); a[i][0]=Integer.parseInt(s1[i]); a[i][1]=Integer.parseInt(s2[i]); } t.Printf(a); System.out.println("\n\n\n"); t.maoPao(a); t.Printf(a);
}
public void maoPao(int a[][]){ for(int i=0;i<a.length;i++){ for(int j=0;j<a.length-i-1;j++){ //先按照-后面的进行比较,小的往前面去 if(a[j][1]>a[j+1][1]){ int temp=a[j][1]; a[j][1]=a[j+1][1]; a[j+1][1]=temp; int temp2=a[j][0]; a[j][0]=a[j+1][0]; a[j+1][0]=temp2; } //再按照-前面进行最终排序,小的往前面去 if(a[j][0]>a[j+1][0]){ int temp=a[j][0]; a[j][0]=a[j+1][0]; a[j+1][0]=temp; int temp2=a[j][1]; a[j][1]=a[j+1][1]; a[j+1][1]=temp2; } } } }
public void Printf(int a[][]){ for(int i=0;i<a.length;i++){ System.out.print(a[i][0]+"-"+a[i][1]+" "); } }
运行结果: