成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP 算法01之選擇排序

NikoManiac / 1562人閱讀

摘要:描述選擇最小的元素由左到右依次交換順序即完成元素由小到大的排序。選擇排序重點在于選擇最小元素。選擇排序每次循環(huán)都能排好一個元素,因此需要交換的次數(shù)等于元素個數(shù)。

描述

選擇最小的元素由左到右依次交換順序即完成元素由小到大的排序。選擇排序重點在于選擇最小元素。以下是較為詳細(xì)的描述:

首先,把所有的數(shù)據(jù)循環(huán)一遍找到最小的數(shù),然后和第一個數(shù)交換位置。

然后從第二個數(shù)起,一直循環(huán)到最后一個,找到最小的數(shù)和第二個交換。

如此一直找到最后一個。

選擇排序每次循環(huán)都能排好一個元素,因此需要交換的次數(shù)等于元素個數(shù)。選擇排序是最容易理解的排序方式,通俗的理解方式就是:在9個碗里放了9個蘋果,逐個看一眼找出最小的蘋果和第一個碗里的交換一下,然后不再看第一個碗,從第二個碗起,再玩一次,直到所有的碗都玩過。

代碼
function selectionSort($needSortData)
{
    $sortDataLength = count($needSortData); //計算出待排序元素數(shù)量
    for ($i = 0; $i < $sortDataLength; $i++) //外層遍歷每一個待排序元素
    {
        $min = $i; //外層遍歷把當(dāng)前元素設(shè)置為最小值
        for ($j = $i + 1; $j < $sortDataLength; $j++) 
        {//然后從下一個元素開始依次和正在遍歷的元素比較,此層遍歷記為內(nèi)層遍歷
            if ($needSortData[$j] < $needSortData[$min]) {
                //遍歷到比此次最小值還小的元素,那么用$min記錄以下當(dāng)前位置
                //然后繼續(xù)遍歷,直到遍歷到最后,也就是說$min會記錄最小值的位置
                $min = $j; 
            }
        }
        //以下三行是把找到的最小值和正在外層遍歷的當(dāng)前元素交換
        $temp = $needSortData[$i];
        $needSortData[$i] = $needSortData[$min];
        $needSortData[$min] = $temp;
    }
    return $needSortData;
}

$unSortedData = [9, 1, 3, 8, 2, 6, 5, 7, 4];
$result=selectionSort($unSortedData);
print_r($result);

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29072.html

相關(guān)文章

  • PHP面試四:邏輯與算法

    摘要:數(shù)據(jù)結(jié)構(gòu)常見數(shù)據(jù)結(jié)構(gòu)數(shù)組是最簡單而且應(yīng)用最廣泛的數(shù)據(jù)結(jié)構(gòu)特征使用連續(xù)內(nèi)存空間來存儲存放相同類型或著衍生類型的元素數(shù)組比較特別,可以存放八種數(shù)據(jù)類型通過下標(biāo)來訪問集合特征保存不重復(fù)的元素字典特征就是關(guān)聯(lián)數(shù)組,以形式存儲棧,與隊列相似特征存儲數(shù) 數(shù)據(jù)結(jié)構(gòu) 常見數(shù)據(jù)結(jié)構(gòu) Array 數(shù)組是 最簡單 而且 應(yīng)用最廣泛 的數(shù)據(jù)結(jié)構(gòu) 特征: 1、使用連續(xù)內(nèi)存空間來存儲 2、存放相同類型或著衍生類型...

    smartlion 評論0 收藏0
  • PHP算法四大基礎(chǔ)算法

    摘要:而在證明算法是正確的基礎(chǔ)上,第二步就是分析算法的時間復(fù)雜度。算法的時間復(fù)雜度反映了程序執(zhí)行時間隨輸入規(guī)模增長而增長的量級,在很大程度上能很好反映出算法的優(yōu)劣與否。 showImg(https://segmentfault.com/img/remote/1460000016451712?w=800&h=341); 前言 雖然工作中,你覺得自己并沒有涉及到算法這方面的東西,但是算法是程序的...

    isLishude 評論0 收藏0
  • JavaScript專題解讀 v8 排序源碼

    摘要:插入排序是穩(wěn)定的算法。所以準(zhǔn)確的說,當(dāng)數(shù)組長度大于的時候,采用了快速排序和插入排序的混合排序方法。在對數(shù)組進行了一次快速排序后,然后對兩個子集分別進行了插入排序,最終修改數(shù)組為正確排序后的數(shù)組。 JavaScript 專題系列第二十篇,也是最后一篇,解讀 v8 排序源碼 前言 v8 是 Chrome 的 JavaScript 引擎,其中關(guān)于數(shù)組的排序完全采用了 JavaScript 實...

    princekin 評論0 收藏0
  • PHP排序算法選擇排序

    摘要:二選擇排序原理在一列數(shù)字中,選出最小數(shù)與第一個位置的數(shù)交換。至此確定了前兩個位置上的數(shù)。示例代碼選擇排序?qū)崿F(xiàn)思路雙重循環(huán)完成,外層控制輪數(shù),當(dāng)前的最小值。 二、選擇排序   原理: 在一列數(shù)字中,選出最小數(shù)與第一個位置的數(shù)交換。然后在剩下的數(shù)當(dāng)中再找最小的與第二個位置的數(shù)交換,如此循環(huán)到倒數(shù)第二個數(shù)和最后一個數(shù)比較為止。(以下都是升序排列,即從小到大排列)   舉例說明: $arr =...

    walterrwu 評論0 收藏0
  • 利用PHP實現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)排序(小白系列文章七)

    摘要:排序嚴(yán)格來說不算數(shù)據(jù)結(jié)構(gòu),更應(yīng)該歸于算法一類,因為數(shù)據(jù)結(jié)構(gòu)指的是數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系,排序參與其中,更多的是讓數(shù)據(jù)狀態(tài)發(fā)生了改變。 排序嚴(yán)格來說不算數(shù)據(jù)結(jié)構(gòu),更應(yīng)該歸于算法一類,因為數(shù)據(jù)結(jié)構(gòu)指的是數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系,排序參與其中,更多的是讓數(shù)據(jù)狀態(tài)發(fā)生了改變。于是,我們開始用PHP來聊聊算法。 引子 其實有一句話說的是不錯的,不必重復(fù)造輪子,所以下面我將引用別人的文章作為本文的引文,...

    jayzou 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<