package ztest.a;
import java.util.Arrays;
import java.util.Comparator;
public class Test3 {
//核心数组排序 参考jdk Arrays.sort TimSort(优化后的归并排序)
public void coreSort(Integer[] a,Comparator<Integer> c){
Arrays.sort(a, c);
}
//从大到小排序
public void sortArray(Integer[] a){
coreSort(a, new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
}
//按高位排序
public void sortByHighNumber(Integer[] a){
coreSort(a, new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2) {
//依次比较最高位 次高位...
String s1 = o1.toString();
String s2 = o2.toString();
int len = s1.length() <= s2.length() ? s1.length():s2.length();
for (int i=0; i<len; i++) {
Integer s1_i = Integer.valueOf(s1.charAt(i));
Integer s2_i = Integer.valueOf(s2.charAt(i));
if(s2_i > s1_i){
return 1;
}else if(s2_i < s1_i){
return -1;
}else{
continue;
}
}
//完全相等
return 0;
}
});
}
public void printArray(Integer[] a){
System.out.print("[");
for (Integer integer : a) {
System.out.print(integer+",");
}
System.out.print("]");
}
public void fun(Integer[] a, int l){
assert l <= a.length;
this.sortArray(a);
Integer[] al = new Integer[l];
for(int i=0 ; i<l; i++){
al[i] = a[i];
}
this.sortByHighNumber(al);
System.out.println("原始数组:");
this.printArray(a);
System.out.println("");
System.out.println("选出的数组:");
this.printArray(al);
System.out.println("");
System.out.println("结果:");
for (Integer integer : al) {
System.out.print(integer);
}
}
public static void main(String[] args) {
Integer[] a= {3423,33,456,9,8,7,21};
Test3 t = new Test3();
t.fun(a, 3);
}
}
test1
最新推荐文章于 2018-05-16 18:50:31 发布