* 如: 78,67,98,21,6,9,78,78,78,21
* 输出:6[1],9[1],21[2],67[1],78[4],98[1]
public void sortAndCount(int array[],int length){
//这里有三个问题:排序、统计元素个数、去重。统计元素个数应在去重之前,去重后再排序
//1、统计元素出现次数。用一个Map来记录某个元素的出现次数
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
//存储Map<array[i],count> map中键是不允许重复的
int count;
for(int i=0;i<length;i++){
count= 0;
for(int j=0;j<length;j++){
if(array[i]==array[j]){
count++;
}
}
map.put(array[i], count);
}
//2、去除数组中的重复元素个数。新开一个数组,原数组元素在新开数组中没有则加入
int b[] = new int[length];
int index=0;
List<Integer> list = new ArrayList<Integer>();
for(int i=0;i<length;i++){
if(!list.contains(array[i])){
list.add(array[i]);
b[index]=array[i];
index++;
}
}
//3、将数组b[]排序
quickSort(b, 0, index);
//4、输出
for(int i=0;i<index;i++){
if(b[i]!=0)
System.out.print(b[i]+"["+map.get(b[i])+"]"+",");
}
}
//快速排序的方法
public void quickSort(int array[],int l,int r){
int i=l,j=r;
int temp;
if(l<r){
temp = array[l];
while(i!=j){
while(i<j&&array[j]>temp){
j--;
}
if(i<j){
array[i]=array[j];
i++;
}
while(i<j&&array[i]<temp){
i++;
}
if(i<j){
array[j]=array[i];
j--;
}
}
array[i]=temp;
quickSort(array,l,i-1);
quickSort(array,i+1,r);
}
}