题目要求:有一个int型数组,里面有若干数字。要求统计出一共有多少种不同的数字?每种数字出现的频率?将数组按出现频率从少到多排列,频率相同则从小到大排列。
解决方法:用一个数组来存储不同的数字及出现概率,逐一拿出数组中的数字和数组中的其他数字进行比较,相同则把相同的那个设为null,同时将该数字对应的出现次数加1,最后使用冒泡排序
js实现代码:
var NumberData=[1,4,5,7,8,3,1,6,4,8,4,6,9,410,12,15,12,6,20,12,5,7,8,5,2,4,1,5,6,3,10];
function CountNumberArray(){
var result=[];
result[0]=[];
result[1]=[];
var allDisNum=0;
var index=0;
//统计不同的数字
for (var i = NumberData.length - 1; i >= 0; i--) {
var temp=NumberData[i];
if(temp){
result[0][index]=temp;
result[1][index]=1;
for (var j = NumberData.length - 1; j >= 0; j--) {
if(temp==NumberData[j]&&j!=i){
result[1][index]+=1;
NumberData[j]=null;
}
}
index++;
}
}
//排序
for (var i = 0; i <result[1].length-1; i++) {
for(var j=i+1;j<result[1].length;j++){
var fcnt=result[1][i];
var fnum=result[0][i];
if(fcnt>result[1][j]|(fcnt==result[1][j]&&fnum>result[0][j])){
result[1][i]=result[1][j];
result[1][j]=fcnt;
result[0][i]=result[0][j];
result[0][j]=fnum;
}
}
}
}
原文地址:http://blog.csdn.net/ldldong/article/details/44260837