如题,这个方法.我用java写出来的方法.这么长...可是,这个要写在actionscript里面,但是actionscript里面没有java的那么多好用的方法.谁能求解出这道智力题?用最好用actionscript写出来,不要用Collections,iterator 迭代啊什么的...public class BubbleSort implements Sort{ 
public void sort(int[] a) {
this.bubble(a,false);

public static void bubble(int[] number,boolean b) {
        boolean flag = true; 
        for(int i = 0; i < number.length-1 && flag; i++) { 
            flag = false; 
            for(int j = 0; j < number.length-i-1; j++) {
         if(same(number[j+1] < number[j],b)) { 
                  swap(number, j+1, j); 
                  flag = true; 
              } 
     } 
        }
    }
    private static boolean same(boolean a ,boolean b){
     if(a==b){
     return true;
     }
     return false;
    }
    private static void swap(int[] number, int i, int j) {
        int t = number[i]; 
        number[i] = number[j]; 
        number[j] = t;
    }
    public static int frequency(int[] c, int o) {
        int result = 0;
       for (int i = 0; i < c.length; i++) {
if(o==c[i]){
result++;
}
}
        return result;
    }
@SuppressWarnings("unchecked")
public static void main(String[] args) {
int[] a=new int[]{1,1,1,9,9,3,3,5,5,5,5,7,2,2,2};
new BubbleSort().sort(a); 
int d=1; 
List list=new ArrayList<Obj>();
for (int i = 0; i < a.length; i=i+d) {
d=BubbleSort.frequency(a,a[i]); 
Obj oo=new Obj(d,a[i]);
list.add(oo);

 
Collections.sort(list,new Comparator<Obj>(){ 
public int compare(Obj o1, Obj o2) { 
return o2.a-o1.a;
}});
 
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Obj object = (Obj) iterator.next();
for (int i = 0; i <object.a; i++) {
System.out.print(object.b+"   ");
}
}
 
}
}java ActionScript

解决方案 »

  1.   


    /**
     * 集合,先按照value数量,再按照value值大小排序
     * 1,1,1,9,9,3,3,5,5,5,5,7,2,2,2  ->
     * 5,5,5,5,2,2,2,1,1,1,9,9,3,3,7
     */package com.zyc.test;import java.util.Arrays;
    import java.util.HashMap;public class Test6 {
    //待排序数组,打乱顺序
    static int[] sourceArr = new int[] { 1, 9, 5, 9, 1, 3, 2, 5, 7, 3, 5, 1, 2,
    2, 5 }; // 先按数量从多到少排序,再按value从大到小排序
    static void sort(int[] arr) {
    //获取每个数字出现的次数
    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
    for (int i : arr) {
    if(!map.containsKey(i)) map.put(i, 1);
    else map.put(i, map.get(i) + 1);
    }
    //获取value数组
    Integer[] valueArr = new Integer[map.size()];
    map.keySet().toArray(valueArr);
    //先按照value数量,再按照value值大小给value数组排序
    for(int i = 0;i < valueArr.length;++i) {
    for(int j = i + 1;j < valueArr.length;++j) {
    if(map.get(valueArr[j]) > map.get(valueArr[i])  || 
    (map.get(valueArr[j]) == map.get(valueArr[i]) && j > i)) {
    int temp = valueArr[i];
    valueArr[i] = valueArr[j];
    valueArr[j] = temp;
    }
    }
    }
    //根据value数组重新设置源数组的值
    int index = 0;
    for (int i = 0;i < valueArr.length;++i) {
    for(int j = 0;j < map.get(valueArr[i]);++j) {
    arr[index++] = valueArr[i];
    }
    }
    } public static void main(String[] args) {
    sort(sourceArr);
    System.out.println(Arrays.toString(sourceArr));
    }
    }
      

  2.   

    上面的判断写错了,更正一下/**
     * 集合,先按照value数量,再按照value值大小排序
     * 1,1,1,9,9,3,3,5,5,5,5,7,2,2,2  ->
     * 5,5,5,5,2,2,2,1,1,1,9,9,3,3,7
     */package com.zyc.test;import java.util.Arrays;
    import java.util.HashMap;public class Test6 {
    //待排序数组,打乱顺序
    static int[] sourceArr = new int[] {1, 9, 5, 9, 1, 3, 2, 5, 7, 3, 5, 1, 2,
    2, 5 }; // 先按数量从多到少排序,再按value从大到小排序
    static void sort(int[] arr) {
    //获取每个数字出现的次数
    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
    for (int i : arr) {
    if(!map.containsKey(i)) map.put(i, 1);
    else map.put(i, map.get(i) + 1);
    }
    //获取value数组
    Integer[] valueArr = new Integer[map.size()];
    map.keySet().toArray(valueArr);
    //先按照value数量,再按照value值大小给value数组排序
    for(int i = 0;i < valueArr.length;++i) {
    for(int j = i + 1;j < valueArr.length;++j) {
    if(map.get(valueArr[j]) > map.get(valueArr[i])  || 
    (map.get(valueArr[j]) == map.get(valueArr[i]) && valueArr[j] > valueArr[i])) {
    int temp = valueArr[i];
    valueArr[i] = valueArr[j];
    valueArr[j] = temp;
    }
    }
    }
    //根据value数组重新设置源数组的值
    int index = 0;
    for (int i = 0;i < valueArr.length;++i) {
    for(int j = 0;j < map.get(valueArr[i]);++j) {
    arr[index++] = valueArr[i];
    }
    }
    } public static void main(String[] args) {
    sort(sourceArr);
    System.out.println(Arrays.toString(sourceArr));
    }
    }
      

  3.   

    嗯,java能实现.用hashmap是很方便.但是actionscript里面 没有这个方法...