中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php基本算法有哪些

發布時間:2020-10-29 10:12:53 來源:億速云 閱讀:149 作者:小新 欄目:編程語言

這篇文章主要介紹了php基本算法有哪些,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

基本算法:

冒泡排序

//逐行對比,滿足條件則交換
function bubbleSort($arrData,$sort = 'desc')
{
    if(empty($arrData)) return $arrData;
    //默認有序
    $isSorted = true;
    $nCount = count($arrData);
    for($i = 0; $i < $nCount; $i++) {
        //對比次數隨著循環逐漸減少,因為后面的數據已經處理為有序
        for($j = 0; $j < ($nCount - $i - 1); $j++) {
            //執行判斷
            $isChange = $sort == 'desc' ? $arrData[$j] < $arrData[$j+1] : $arrData[$j] > $arrData[$j+1];
            if($isChange) {
                //首次對比,判斷是否有序
                $isSorted = false;
                $temp = $arrData[$j];
                $arrData[$j] = $arrData[$j+1];
                $arrData[$j+1] = $temp;
            }
        }
        if($isSorted) break;
    }
    return $arrData;
}

快速排序

//選取一個標準,和其他數據對比后將數據分為兩批,遞歸執行后合并
function quickSort(&$arr, $sort = 'asc'){
    //檢查數據,多于一個數據才執行
    $nCount = count($arr);
    if($nCount > 1) {
        //選取標準(第一個數據)
        $nStandard = $arr[0];
        $arrLeftData = [];
        $arrRightData = [];
        //遍歷,注意這里從1開始比較
        for($i = 1; $i < $nCount; $i++) {
            if($sort == 'desc') {
                $arr[$i] > $nStandard ? $arrLeftData[] = $arr[$i] : $arrRightData[] = $arr[$i];
            } else {
                $arr[$i] > $nStandard ? $arrRightData[] = $arr[$i] : $arrLeftData[] = $arr[$i];
            }
        }
        $arr = array_merge($this->quickSort($arrLeftData, $sort), array($nStandard), $this->quickSort($arrRightData, $sort));
    }
    return $arr;
}

二分查找

//假設數據是按升序排序的,對于給定值x,從序列的中間位置開始比較,如果當前位置值等于x,則查找成功;
//若x小于當前位置值,則在數列的前半段中查找;若x大于當前位置值則在數列的后半段中繼續查找,直到找到為止
function binSearch($toSearch,$arr)
{
    //確定當前的檢索范圍
    $nCount = count($arr);
    //低位鍵,初始為0
    $nLowNum = 0;
    //高位鍵,初始為末尾 
    $nHighNum = $nCount - 1;
    while($nLowNum <= $nHighNum) {
        //選定大概中間鍵
        $nMiddleNum = intval(($nHighNum + $nLowNum)/2);
        if($arr[$nMiddleNum] > $toSearch) {
            //比檢索值大
            $nHighNum = $nMiddleNum - 1;
        } elseif ($arr[$nMiddleNum] < $toSearch) {
            //比檢索值小
            $nLowNum = $nMiddleNum + 1;
        } else {
            return $nMiddleNum;
        }
    }
    return false;
}

順序查找

function seqSearch($arr,$toSearch)
{
    $nCount = count($arr);
    for ($i=0; $i < $nCount; $i++) {
        if ($arr[$i] == $toSearch) {
            return $i;
        }
    }
    return -1;
}

選擇排序

//在第一次循環中,假設第一個數是最小的;然后跟第二個數比較,一直比到最后,找出最小值,然后把最小值跟第一個數的位置互換;
//再進行下一次循環,找出最小值跟第二個位置的數互換;一直循環數組的個數減去1次;數組就成了有序的了 
function selectSort($arr)
{
    $nCount = count($arr);
    //遍歷取得需要排序的數
    for($i = 0; $i < $nCount; $i++) {
        //選擇需要比較的數,從$i開始到結束
        for($j = $i + 1; $j < $nCount; $j++) {
            //比較
            if($arr[$j] < $arr[$i]) {
                $temp = $arr[$i];
                $arr[$i] = $arr[$j];
                $arr[$j] = $temp;
            }
        }
    }
    return $arr;  
}

感謝你能夠認真閱讀完這篇文章,希望小編分享php基本算法有哪些內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

游戏| 墨玉县| 玛沁县| 望城县| 哈巴河县| 奇台县| 邯郸县| 理塘县| 濮阳县| 漾濞| 赤城县| 法库县| 辽宁省| 澜沧| 鹤庆县| 榆林市| 灯塔市| 桂林市| 扎囊县| 元阳县| 库伦旗| 如皋市| 泉州市| 樟树市| 涞源县| 古交市| 金门县| 衡山县| 平安县| 磐石市| 阿图什市| 宁乡县| 肇东市| 辽源市| 清新县| 东城区| 乐山市| 贵阳市| 镶黄旗| 信丰县| 湘乡市|