如题,这个方法.我用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
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
/**
* 集合,先按照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));
}
}
* 集合,先按照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));
}
}