输入一个数组,对数组进行排序,并输出该数组中重复元素出现的次数
2013-10-22 15:37
831 查看
*对一个数组排序,并输出数组中重复元素的个数
* 如: 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);
}
}
* 如: 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);
}
}
相关文章推荐
- 给定一个字符串里面只有"R" "G" "B" 三个字符,请排序,最终结果的顺序是R在前 G中 B在后。
- DIV高度设置为1,显示出来变高
- Eclipse快速入门:远程调试Java应用
- EnumMap的使用
- spring-mybatis源码追踪
- Android Framework 深入浅出-HAL, Binder, View System 与 Native Service
- ThoughtWorks技术雷达(2012年03月)
- 网络编程TCP与UDP
- HTML中fieldset的使用
- 开源搜索引擎介绍
- commons fileupload上传报错
- Cocos2d-x 的“HelloWorld” 深入分析
- Android JNI ,jni基本数据类型转换
- xargs
- OCA读书笔记(16) - 执行数据库恢复
- 网吧加速浏览器解压软件最新免费版
- 万象2004登陆界面皮肤大全
- 变调不变速方法
- Microsoft 错误报告发送修复补丁通用版
- VB.Net程序设计:鼠标滑轮滚动Panel面板