当前位置:编程学习 > JAVA >>

java 排序问题,高手进。

int a[] = {543,57,541,36,48,1221,25,1},让你排成这样的int a[] = {57,543,541,48,36,25,1221,1}。规则是降序,先比较每个数的第一位,如果第一位相同再比较第二位,以此类推。写算法,怎么写? 算法 排序 java 数组 --------------------编程问答-------------------- 直接按字符串降序就好了! --------------------编程问答--------------------
引用 1 楼 zoeg 的回复:
直接按字符串降序就好了!


Yes --------------------编程问答-------------------- 那要怎么做才是 --------------------编程问答--------------------

 int[] intArray = {543,57,541,36,48,1221,25,1};
 String[] strArray = new String[intArray.length];
 for (int index = 0; index < intArray.length; ++index)
 {
     strArray[index] = String.valueOf(intArray[index]);
 }
 
 
 Arrays.sort(strArray);
 ArrayUtils.reverse(strArray);
 for (int i = 0; i < strArray.length; i++)
{
 System.out.println(strArray[i]);
}
--------------------编程问答-------------------- int a[] = {543,57,541,36,48,1221,25,1};
String []str =new String [a.length];
for (int i=0;i<a.length ;i++)
{
str[i] = String.valueOf(a[i]);
}
for (int i=0;i<str.length;i++)
{
System.out.print(str[i]+"\t");
}
System.out.print("\n"+"sort as Integer:"+"\n");
Arrays.sort(a);
for (int i=0;i<a.length ;i++)
{
System.out.print(a[i]+"\t");
}
Arrays.sort(str);//默认升序
System.out.print("\n"+"sort as string asc:"+"\n");
for (int i=0;i<str.length;i++)
{
System.out.print(str[i]+"\t");
}
//降序
for (int j=0;j<str.length/2;j++)
{
String temp = null;
temp = str[j];
str[j] = str[str.length-1-j];
str[str.length-1-j] = temp;
}
System.out.print("\n"+"sort as string desc:"+"\n");
for (int i=0;i<str.length;i++)
{
System.out.print(str[i]+"\t");
} --------------------编程问答--------------------
引用 5 楼 gaint111 的回复:
int a[] = {543,57,541,36,48,1221,25,1};
String []str =new String [a.length];
for (int i=0;i<a.length ;i++)
{
str[i] = String.valueOf(a[i]);
}
for (int i=0;i<str.length;i++)
{
System.out.print(str[i]+"\t");
}
System.out.print("\n"+"sort as Integer:"+"\n");
Arrays.sort(a);
for (int i=0;i<a.length ;i++)
{
System.out.print(a[i]+"\t");
}
Arrays.sort(str);//默认升序
System.out.print("\n"+"sort as string asc:"+"\n");
for (int i=0;i<str.length;i++)
{
System.out.print(str[i]+"\t");
}
//降序
for (int j=0;j<str.length/2;j++)
{
String temp = null;
temp = str[j];
str[j] = str[str.length-1-j];
str[str.length-1-j] = temp;
}
System.out.print("\n"+"sort as string desc:"+"\n");
for (int i=0;i<str.length;i++)
{
System.out.print(str[i]+"\t");
}
ArrayUtils.reverse(strArray);直接颠倒过来就行了  --------------------编程问答--------------------
import java.util.Arrays;
import java.util.Comparator;


public class sdfsd {
public static void main(String[] args){
int a[] = {57,543,541,48,36,25,1221,1};
Integer[] newArray = new Integer[a.length];
int i = 0;
for (int value : a) {
    newArray[i++] = Integer.valueOf(value);
}
Comparator c=new Comparator<Integer>() {

@Override
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
String a1=o1+"";
String a2=o2+"";
return -a1.compareTo(a2);
}
};
Arrays.sort(newArray, c);
System.out.println(Arrays.toString(newArray));
}
}
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,