国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP實現找出數組中出現次數超過數組長度一半的數字算法示例

2024-05-05 00:00:47
字體:
來源:轉載
供稿:網友

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

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

運行結果:

數組中共有元素15個1出現了8次,超過了數組長度的一半7.5

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


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 温州市| 隆德县| 封丘县| 济阳县| 北流市| 玉龙| 岱山县| 台中县| 厦门市| 万全县| 中牟县| 木兰县| 宁阳县| 奉贤区| 泰来县| 衡山县| 沧州市| 黔江区| 黑水县| 清新县| 乌苏市| 海门市| 巴中市| 秦安县| 林周县| 南通市| 阿拉善右旗| 东宁县| 镇安县| 江门市| 阿巴嘎旗| 民勤县| 遵义市| 湖口县| 肃宁县| 湛江市| 万州区| 竹山县| 凉城县| 怀安县| 罗甸县|