方法一:
設計思路:給數組排序,由於衆數出現次數大於n/2,所以第n/2個元素就是衆數。
function mostNum(arr){
var arr2 = arr.sort((a,b)=>{return b-a;});
var zhong = arr[parseInt(arr.length/2)];
return zhong;
}
方法二:
設計思路:給定一個數組[32,34,32,12,78,32]
用第一個元素跟之後的所有元素比較,如果兩個元素相等,計時器count+1,並刪除這個相同元素。比較完成後,把count追加到result中。
這樣第二個元素就一定跟第一個元素不相等,計數器歸1,用第二元素跟之後元素相比,重複上個步驟。
最後數組arr剩餘的元素均不重複。
result中的元素跟arr中的元素一一對應,result元素就是arr中對應元素出現的次數。倆數組長度相同。result中大於n/2的就是衆數出現次數,它的index就是arr中衆數的index。如果沒有就是沒有衆數。
function mostNum(arr){
var halfArr = arr.length/2;//獲取數組長度的二分之一
var result=[];//用來存放arr元素出現次數
console.log('數組長度爲:'+arr.length);//打印arr長度
for(j=0;j<arr.length;j++){//獲取arr第j項元素
var count=1;//聲明計數器
for(i=j+1;i<halfArr*2;i++){//用arr的第j項跟arrj+1之後的項相比較
if(arr[i]==arr[j]){//判斷如果相同
count++;//計數器+1
arr.splice(i,1);//刪除這個元素的重複項,只保留第一個,splice從第i項開始刪除,刪除一個元素
i--;//由於第i項被刪除,第i+1項會變成第i項,所以需要重新判斷
}
}
result.push(count);//把計數結果添加到result數組中
}
console.log('數組result:'+result);//打印result最終結果
console.log('數組arr:'+arr);//輸出arr去除重複項後的數組
var zhong='';
if(result.some((value,index)=>{return value>=halfArr;})==false){//判斷是否存在衆數
zhong = '沒有衆數';
}else {
result.some(function(value,index){//數組遍歷
if(value>=halfArr){//如果計數結果中有大於arr數組一半的值,那這個值就是衆數的計數結果
console.log(arr[index]);
zhong = '衆數是:'+arr[index]+'<br>'+'衆數出現的次數:'+value;
}
});
}
return zhong;
}