例如: int [] arr = {1,9,5,94,98} 的值为 1959498
进行排序之后
要变成 9989451,即
[9,98,94,5,1]
//交换
public static void swap(ArrayList <String> arr , int i){
String temp = arr.get(i);
arr.set(i,arr.get(i-1));
arr.set(i-1,temp);
}
//主要的方法
//进行比较交换
//用后面一个值跟前面的值 的组合
//例如: String [] arr = {"1","2"};
//可以组合成 12 或者 21 再将String->int ,进行比较
//因为 12 < 21
//所以交换成 String [] arr = {"2","1"};
//如果比交换后的小,则进行交换
public static void comparable(ArrayList <String> arr , int i ){
String s1 = arr.get(i) + arr.get(i-1) ;
String s2 = arr.get(i-1) + arr.get(i) ;
int string1 = Integer.parseInt(s1);
int string2 = Integer.parseInt(s2);
if( string1> string2)
swap(arr ,i);
}
//将整形数组转换成String数组
public static ArrayList <String> intToString (int [] arr){
ArrayList <String> array = new ArrayList<String>();
for(int ar : arr){
array.add(ar+"");
}
return array;
}
public static void main(String args[]){
int [] arr = {1,9,5,94,98};
ArrayList <String> array = intToString(arr);
//用冒泡排序进行排序
for(int j = 0 ; j < array.size() ; j++ ){
for(int i = array.size()-1 ; i > j ; i-- ){
comparable(array , i);
}
}
System.out.print("排序之前数组:");
for(int a : arr){
System.out.print(a + " ");
}
System.out.println("");
System.out.print("排序之前数组的值:");
for(int i : arr){
System.out.print(i);
}
System.out.println("");
System.out.println("------------------------");
System.out.print("排序之后数组:");
for(String s : array){
System.out.print(s + " ");
}
System.out.println("");
System.out.print("排序之后数组的值:");
for(String s : array){
System.out.print(s);
}
}
结果如图所示:
如有错误,欢迎指正,如果您有其他的想法和其他意见,可以在评论下方说出您的想法,谢谢!