濮阳杆衣贸易有限公司

主頁 > 知識庫 > PHP實現(xiàn)找出數(shù)組中出現(xiàn)次數(shù)超過數(shù)組長度一半的數(shù)字算法示例

PHP實現(xiàn)找出數(shù)組中出現(xiàn)次數(shù)超過數(shù)組長度一半的數(shù)字算法示例

熱門標(biāo)簽:400電話申請辦理 百度地圖標(biāo)注類型是酒店 福建高頻外呼防封系統(tǒng)哪家好 隨州銷售電銷機(jī)器人公司 商丘外呼系統(tǒng)好處 外呼系統(tǒng)人工客服 網(wǎng)絡(luò)電話400申請 周口網(wǎng)絡(luò)回?fù)芡夂粝到y(tǒng) 全國各省地圖標(biāo)注點

本文實例講述了PHP實現(xiàn)找出數(shù)組中出現(xiàn)次數(shù)超過數(shù)組長度一半的數(shù)字算法。分享給大家供大家參考,具體如下:

?php
* 算法要求:數(shù)組中有一個數(shù)字出現(xiàn)的次數(shù)超過了數(shù)組長度的一半,找出這個數(shù)字。
*
* 算法分析:我們需要計算數(shù)組中每個數(shù)字的出現(xiàn)次數(shù)。在PHP中我們可以使用in_array函數(shù)
* 來判斷一個元素是否出現(xiàn)在數(shù)組中。比如數(shù)組中含有1,2,3三個元素,我們要判斷1是否存在
* 可以使用in_array(1,$array)來判斷,但是這樣只能判斷1出現(xiàn)了一次,因為對于含有數(shù)組
* 元素1,2,3,1這樣的數(shù)組來說,該函數(shù)只能判斷1存在與數(shù)組中,而不能給出具體的出現(xiàn)次數(shù)。
* 因為我們一次只能給它傳遞一個參數(shù),我們判斷了第一個1存在后,函數(shù)就返回了,為了能夠繼續(xù)
* 判斷后一個1,我們需要循環(huán),讓該函數(shù)多次執(zhí)行。
*
* 為此,我們需要一個原數(shù)組的拷貝。我們循環(huán)原數(shù)組,然后判斷每一個元素是否存在于拷貝數(shù)組中。
* 考慮數(shù)組array(1,2,3,1),以及拷貝數(shù)組array(1,2,3,1)。它們是完全一樣的,當(dāng)我們循環(huán)
* 第一個數(shù)組時,先判斷第一個1存在后,計數(shù)器自增,當(dāng)循環(huán)到第二個1的時候,計數(shù)器再自增。這樣
* 我們就可以準(zhǔn)確的判斷每一個數(shù)組元素的出現(xiàn)次數(shù)。
*
* 我們將數(shù)字和對應(yīng)的出現(xiàn)次數(shù),使用鍵 對的方式存儲在數(shù)組中。比如array('1'=>2),表示,數(shù)字1出現(xiàn)
* 了2次。
*
* 下面的代碼給出了具體實現(xiàn)過程。
*/
$array=array(1,1,3,1,1,14,1,1,4,6,7,1,1,21,33);
//創(chuàng)建原數(shù)組
$temp=$array;
//得到原數(shù)組的一個拷貝
$result=array();
//初始化計數(shù)器數(shù)組
foreach ($array as $value)//循環(huán)原數(shù)組
{
  if(in_array($value,$temp))//判斷數(shù)字是否存在于拷貝數(shù)組中
  {
    if(isset($result[$value]))//判斷該數(shù)字是否已經(jīng)被計數(shù)過
    {
      $result[$value]=$result[$value]+1;
      //如果已經(jīng)出現(xiàn)過,計數(shù)器自增
    } else
    {
      $result[$value]=1;
      //如果沒有,計數(shù)器初始化1
    }
  }
}
$len=count($array);
//計算數(shù)組長度
foreach ($result as $key=>$value)//循環(huán)計數(shù)器數(shù)組,這里的$key表示數(shù)字,$value表示出現(xiàn)次數(shù)
{
  if($value>($len/2))//如果一個數(shù)字的出現(xiàn)次數(shù)超過了數(shù)組長度的一半
  {
    echo '數(shù)組中共有元素'.$len.'個br>';
    echo $key.'出現(xiàn)了'.$value.'次,超過了數(shù)組長度的一半'.($len/2);
    break;
    //數(shù)組中只可能有一個數(shù)字的出現(xiàn)次數(shù)超過數(shù)組長度的一半
  }
}
?>

運(yùn)行結(jié)果:

數(shù)組中共有元素15個
1出現(xiàn)了8次,超過了數(shù)組長度的一半7.5

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計算法總結(jié)》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《php字符串(string)用法總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • php查找字符串出現(xiàn)次數(shù)的方法
  • php計算數(shù)組相同值出現(xiàn)次數(shù)的代碼(array_count_values)
  • PHP獲取數(shù)組長度或某個值出現(xiàn)次數(shù)的方法
  • php獲取字符串中各個字符出現(xiàn)次數(shù)的方法
  • PHP中substr_count()函數(shù)獲取子字符串出現(xiàn)次數(shù)的方法
  • PHP實現(xiàn)統(tǒng)計所有字符在字符串中出現(xiàn)次數(shù)的方法
  • PHP統(tǒng)計二維數(shù)組元素個數(shù)的方法
  • php統(tǒng)計數(shù)組元素個數(shù)的方法
  • PHP統(tǒng)計數(shù)值數(shù)組中出現(xiàn)頻率最多的10個數(shù)字的方法
  • PHP實現(xiàn)統(tǒng)計一個數(shù)字在排序數(shù)組中出現(xiàn)次數(shù)的方法

標(biāo)簽:樂山 海南 十堰 定西 佛山 南寧 六安 迪慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP實現(xiàn)找出數(shù)組中出現(xiàn)次數(shù)超過數(shù)組長度一半的數(shù)字算法示例》,本文關(guān)鍵詞  PHP,實現(xiàn),找出,數(shù)組,中,出現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP實現(xiàn)找出數(shù)組中出現(xiàn)次數(shù)超過數(shù)組長度一半的數(shù)字算法示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP實現(xiàn)找出數(shù)組中出現(xiàn)次數(shù)超過數(shù)組長度一半的數(shù)字算法示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    措美县| 金沙县| 安阳县| 和硕县| 赤城县| 客服| 闽侯县| 沂源县| 松潘县| 伊春市| 会东县| 久治县| 韶山市| 宜川县| 东乌珠穆沁旗| 同德县| 连江县| 泸州市| 旬邑县| 昌黎县| 乐亭县| 沽源县| 锦州市| 阜南县| 启东市| 嘉善县| 昌邑市| 梨树县| 南投县| 孙吴县| 桐庐县| 大港区| 岳普湖县| 咸阳市| 临澧县| 静乐县| 铜梁县| 沛县| 依安县| 盐源县| 西宁市|