一个java编程题,怎么求出数组中重复数字的出现次数,并按次数从大到下排序

打印出这样的 5出现8次 10出现7次 2出现5次 1出现2次 3出现1次
上点代码吧 思路我也有 就是写不出来

是按重复次数的从大到小排序

#include <iostream> #include <string> #include <fstream> using namespace std; int count=0; void countNum(int a[],int start,int finish) { //cout<<start<<" \n"<<finish<<"\n"; int middle=(start+finish)/2; if(start>finish) return ; if(a[middle]==2) { count++; countNum(a,start,middle-1); countNum(a,middle+1,finish); //cout<<"get here"<<middle<<endl; }else if(a[middle]>2) { countNum(a,start,middle-1); }else

{

countNum(a,middle+1,finish);

}
//return count; } int main() {  int s[1000]; ifstream inf("1.txt"); int i=0;

while(!inf.eof())

{inf>>s[i];i++;} //int s[]={1,2,2,2,3}; int start=0;//,finish=NUM-1; countNum(s,start,i-1); cout<<count<<endl;  }


扩展资料

#include<iterator>

template<typenamebiIter>

voidinsertion_sort(biIterbegin,biIterend)

{

typedeftypenamestd::iterator_traits<biIter>::value_typevalue_type;

biIterbond=begin;

std::advance(bond,1);

for(;bond!=end;std::advance(bond,1)){

value_typekey=*bond;

biIterins=bond;

biIterpre=ins;

std::advance(pre,-1);

while(ins!=begin&&*pre>key){

*ins=*pre;

std::advance(ins,-1);

std::advance(pre,-1);

}

*ins=key;

}

}

参考资料:百度百科 排序

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-20
public static void main(String[] args) {
int array[]={5, 10, 10, 5, 2, 5, 3, 5, 10, 5, 2, 5, 5, 10, 1, 5, 1};
Arrays.sort(array);// 给数组排序
int count=0;
int tmp=array[0];
Map map=new HashMap();
for(int i=0; i < array.length; i++) {
if(tmp != array[i]) {
tmp=array[i];
count=1;
} else {
count++;
}
map.put(array[i], count);
}
map=sortByValue(map);
Set<Integer> key = map.keySet();
for (Iterator it = key.iterator(); it.hasNext();) {
Integer s = (Integer) it.next();
System.out.println(s+"出现了"+map.get(s));
}
}

public static Map sortByValue(Map map) {
List list=new LinkedList(map.entrySet());
Collections.sort(list, new Comparator() {
// 将链表按照值得从小到大进行排序
public int compare(Object o1, Object o2) {
return ((Comparable)((Map.Entry)(o2)).getValue()).compareTo(((Map.Entry)(o1)).getValue());
}
});
Map result=new LinkedHashMap();
for(Iterator it=list.iterator(); it.hasNext();) {
Map.Entry entry=(Map.Entry)it.next();
result.put(entry.getKey(), entry.getValue());
}
return result;
}本回答被提问者和网友采纳
第2个回答  2012-11-14
/***求出一个数组中出现次数最多的数,如果有多个数出现次数相同,一同列出 */import java.util.TreeMap;import java.util.Iterator;import java.util.Map;import java.util.Set;import java.util.Arrays;class ArrayLookup{public void getMaxCount(int[] iArr){int i = 0; //临时变量 int j = 0; //临时变量int count = 1; //记录相同数字出现次数int temp = 0; //记录数组中相同元素的值int max = 0; //记录出现次数最多的数 //数组排序Arrays.sort(iArr);TreeMap<Integer,Integer> tm = new TreeMap<Integer,Integer>();//将数字与其出现次数存入Map集合while(i<iArr.length){for(j= i+1; j<iArr.length && iArr[i]==iArr[j]; j++)count++;tm.put(iArr[i],count); count = 1;i = j;}Set<Map.Entry<Integer,Integer>> set = tm.entrySet();Iterator<Map.Entry<Integer,Integer>> it = set.iterator();while(it.hasNext()){Map.Entry<Integer,Integer> me = it.next();System.out.println(me.getKey() + "出现 " + me.getValue() + " 次");}}}public class ArrayLookupMain {private int count;public static void main(String[] args){ int[] intArray = {2,3,4,2,3,4};//,2,2,2,2,5,2,12,6,8,4,3,7,7,5,3,2,5,8,9,8,8,4,5,4,6,8,9,0,5,3,3,2,4,4,7,8,5,34,5,6,5,3,34,6,7,8,9,0};ArrayLookup arr = new ArrayLookup();arr.getMaxCount(intArray); } }
第3个回答  2012-11-14
for(i=0;i<i.length;i++){
system.out.println("");
}
第4个回答  2012-11-17
用增强FOR循环