亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 邏輯算法 > 正文

PHP 排序算法之選擇排序

2020-03-22 16:21:26
字體:
來源:轉載
供稿:網友
選擇排序 select sorting

● 選擇排序也是內部排序

● 排序思想:

第一次先隨便選擇一個數,就是在要排序的數組中選擇一個元素和數組的其它元素比較。然后比較交換位置得到最小值或者最大值,然后再次在剩下的數組中,選擇一個數和數組剩下的元素比較,最后得到第二個最小或最大的元素。依次類推

● 示意圖:

選擇排序一共有數組大小 - 1 輪排序;每一輪排序又是一個循環;先假定當前的這個數組就是最小數,然后和后面的元素依次比較,如果發現有比當前數更小的數,就重新確定最小數,并得到下標,當遍歷到數組的最后時,就得到本輪最小數和下標,交換

1. 假設有一個待排序的數組 [3, 1, 15, 5, 20]

2. 隨機選擇一個元素,假設第一個就是最小的元素,拿 3 和數組剩下的元素比較,第一輪排序后得到最小元素 1

<?php$arr = [3, 1, 15, 5, 20];$count = count($arr);//假設最小的元素就是第一個元素$minIndex = 0;$min = $arr[0];for ($j = $minIndex + 1; $j < $count; $j++) {    if ($min > $arr[$j]) { //假定的最小值大于后面的值,重置最小值        $min = $arr[$j];        $minIndex = $j;    }}$arr[$minIndex] = $arr[0];$arr[0] = $min;

3. 再次選擇一個假定最小值,與后面的元素一次比較,得到第二個最小值

<?php$arr = [1, 3, 15, 5, 20];$count = count($arr);//假設最小的元素就是第二個元素$minIndex = 1;//假設的最小元素的下表$min = $arr[1];//假定最小元素的值for ($j = $minIndex + 1; $j < $count; $j++) {    if ($min > $arr[$j]) { //假定的最小值大于后面的值,重置最小值        $min = $arr[$j];        $minIndex = $j;    }}if ($minIndex != 1) {    $arr[$minIndex] = $arr[1];//假定的最小元素不是最小元素,那么把后面的最小元素和假定的最小元素做交換    $arr[1] = $min;//元素下標交換}

4. 以此類推,就可以使用雙重 for 循環,得到選擇排序的算法如下:

  html' target='_blank'>public static function sortSelect(array $arr) :array    {        if (!is_array($arr)) {            return ['message' => '$arr不是一個數組'];        }        $count = count($arr);        if ($count <= 1) {            return $arr;        }        for ($i = 0; $i < $count; $i++) {            $minIndex = $i;            $min = $arr[$i];            for ($j = $i + 1; $j < $count; $j++) {                if ($min > $arr[$j]) {//選擇的假定最小元素大于后面的元素                    $min = $arr[$j];//把后面的最小元素賦值給假定的最小元素                    $minIndex = $j;//把后面最小元素的坐標賦值給假定的最小元素                }            }            if ($minIndex != $i) {//如果在這個位置,一開始的假定最小元素的坐標被替換了,說明假定最小元素不是最小元素,那么發生交換                $arr[$minIndex] = $arr[$i];//交換最小元素,把最小元素和假定元素做交換                $arr[$i] = $min;            }        }        return $arr;    }

● 完整代碼如下:

<?phpclass SelectSort{    public static function select(array $arr):array    {        $count = count($arr);        //假設最小的元素就是第二個元素        $minIndex = 0;//假設的最小元素的下表        $min = $arr[0];//假定最小元素的值        for ($j = $minIndex + 1; $j < $count; $j++) {            if ($min > $arr[$j]) { //假定的最小值大于后面的值,重置最小值                $min = $arr[$j];                $minIndex = $j;            }        }        if ($minIndex != 0) {            $arr[$minIndex] = $arr[0];//假定的最小元素不是最小元素,那么把后面的最小元素和假定的最小元素做交換            $arr[0] = $min;//元素下標交換        }        var_dump($arr);        $minIndex = 1;//假設的最小元素的下表        $min = $arr[1];//假定最小元素的值        for ($j = $minIndex + 1; $j < $count; $j++) {            if ($min > $arr[$j]) { //假定的最小值大于后面的值,重置最小值                $min = $arr[$j];                $minIndex = $j;            }        }        if ($minIndex != 1) {            $arr[$minIndex] = $arr[1];//假定的最小元素不是最小元素,那么把后面的最小元素和假定的最小元素做交換            $arr[1] = $min;//元素下標交換        }        var_dump($arr);        $minIndex = 2;//假設的最小元素的下表        $min = $arr[2];//假定最小元素的值        for ($j = $minIndex + 1; $j < $count; $j++) {            if ($min > $arr[$j]) { //假定的最小值大于后面的值,重置最小值                $min = $arr[$j];                $minIndex = $j;            }        }        if ($minIndex != 2) {            $arr[$minIndex] = $arr[2];//假定的最小元素不是最小元素,那么把后面的最小元素和假定的最小元素做交換            $arr[2] = $min;//元素下標交換        }        var_dump($arr);        return $arr;    }    public static function sortSelect(array $arr) :array    {        if (!is_array($arr)) {            return ['message' => '$arr不是一個數組'];        }        $count = count($arr);        if ($count <= 1) {            return $arr;        }        for ($i = 0; $i < $count - 1; $i++) {            $minIndex = $i;            $min = $arr[$i];            for ($j = $i + 1; $j < $count; $j++) {                if ($min > $arr[$j]) {//選擇的假定最小元素大于后面的元素                    $min = $arr[$j];//把后面的最小元素賦值給假定的最小元素                    $minIndex = $j;//把后面最小元素的坐標賦值給假定的最小元素                }            }            if ($minIndex != $i) {//如果在這個位置,一開始的假定最小元素的坐標被替換了,說明假定最小元素不是最小元素,那么發生交換                $arr[$minIndex] = $arr[$i];//交換最小元素,把最小元素和假定元素做交換                $arr[$i] = $min;            }        }        return $arr;    }}$arr = [3, 1, 15, 5, 20];var_dump(SelectSort::sortSelect($arr));

以上就是PHP 排序算法之選擇排序的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97国产在线视频| 久久久精品美女| 欧美高清电影在线看| 日韩美女在线观看| 国产精品久久久久免费a∨大胸| 亚州成人av在线| 91av在线国产| 91国自产精品中文字幕亚洲| 欧美一级淫片aaaaaaa视频| 538国产精品视频一区二区| 国产91精品视频在线观看| 亚洲午夜久久久久久久| 国产综合福利在线| 久久精品欧美视频| 亚洲精品福利免费在线观看| 久久久久久久久久久久av| 日韩中文在线视频| 久久国产精品免费视频| 亚洲视频日韩精品| 日韩一区二区精品视频| 91国偷自产一区二区三区的观看方式| 中文字幕亚洲无线码在线一区| 国产极品jizzhd欧美| 亚洲黄色在线观看| 国产精品啪视频| y97精品国产97久久久久久| 亚洲视频日韩精品| 亚洲国产精品一区二区久| 亚洲一区二区黄| 国产在线观看一区二区三区| 懂色av中文一区二区三区天美| 欧美中文字幕第一页| 51视频国产精品一区二区| 成人欧美一区二区三区在线| 国产欧美久久一区二区| 亚洲一区二区久久久| 国产成人精品免费久久久久| 国产精品视频精品| 久久网福利资源网站| 在线观看久久av| 色妞一区二区三区| 欧美一性一乱一交一视频| 国产精品一区二区三区成人| 日韩中文字幕网站| 久久久免费在线观看| 久久99精品视频一区97| 日韩在线观看成人| 欧美成人自拍视频| 69视频在线播放| 日韩成人在线视频| 高清日韩电视剧大全免费播放在线观看| 久久久天堂国产精品女人| 国产精品久久久久国产a级| 久久91精品国产91久久久| 自拍偷拍亚洲欧美| 国产成人综合一区二区三区| 日韩av影视在线| 色噜噜狠狠狠综合曰曰曰| 欧美成人精品xxx| 国产欧美一区二区三区视频| 亚洲人成欧美中文字幕| 亚洲国产精品系列| 欧美小视频在线观看| 欧美日韩爱爱视频| 免费91麻豆精品国产自产在线观看| 热久久视久久精品18亚洲精品| 91精品久久久久久久久久另类| 国产v综合ⅴ日韩v欧美大片| 中文字幕欧美日韩在线| 97在线视频精品| 少妇高潮久久久久久潘金莲| 国产精品一区二区女厕厕| 久久久影视精品| 国产在线精品自拍| 亚洲黄页视频免费观看| 91精品国产自产在线观看永久| 中文字幕亚洲欧美一区二区三区| 日韩视频免费看| 日韩欧美中文字幕在线观看| 北条麻妃一区二区在线观看| 亚洲精品视频在线观看视频| 韩国欧美亚洲国产| 久久免费观看视频| 97国产精品久久| 成人女保姆的销魂服务| 国产一区二区三区高清在线观看| 久久影视电视剧免费网站| 亚洲网站在线看| 色偷偷偷综合中文字幕;dd| 日本午夜人人精品| 亚洲欧美国产精品va在线观看| 日韩在线观看免费| 久久精品久久久久电影| 欧美小视频在线| 中文字幕9999| 日韩精品黄色网| 一本色道久久88综合日韩精品| 国产精品白嫩初高中害羞小美女| 欧美wwwwww| 啊v视频在线一区二区三区| 2019亚洲日韩新视频| 欧美精品videos另类日本| 亚洲第一精品久久忘忧草社区| 热久久这里只有精品| 97国产精品视频人人做人人爱| 日韩av中文在线| 久久久久久久激情视频| 欧美极品少妇xxxxⅹ裸体艺术| 欧美日韩中文字幕在线视频| 日韩av片电影专区| 亚洲风情亚aⅴ在线发布| 欧美人与物videos| 欧日韩不卡在线视频| 国产欧美va欧美va香蕉在线| 亚洲国产第一页| 中文字幕亚洲二区| 精品一区二区三区三区| 国产精品男女猛烈高潮激情| 欧美黑人国产人伦爽爽爽| 日韩欧美在线网址| 亚洲国产精品成人一区二区| 亚洲日本中文字幕免费在线不卡| 欧美麻豆久久久久久中文| 欧美夫妻性生活视频| 日韩美女毛茸茸| 国产精品99蜜臀久久不卡二区| 色综合久久88色综合天天看泰| 国产精品嫩草视频| 夜夜嗨av一区二区三区免费区| 91视频免费在线| 久久久久久久久91| 日韩免费av一区二区| 国产精品无码专区在线观看| 亚洲精品久久久久| 久久精品成人欧美大片| 久热精品视频在线观看一区| 久久精品99久久久久久久久| 亚洲精品99999| 不卡av在线网站| 97人洗澡人人免费公开视频碰碰碰| 久久成人精品视频| 精品一区二区三区四区在线| 久久久久久12| 色综合色综合久久综合频道88| 影音先锋欧美在线资源| 久久久免费电影| 欧美日韩人人澡狠狠躁视频| 国产成人综合一区二区三区| 久久色免费在线视频| 亚洲男人天堂网站| 中文欧美日本在线资源| 久久久精品美女| 精品久久久久久久久久久久久| 欧美在线国产精品| 亚洲美女中文字幕| 国内精品久久久久| 国产美女久久精品| 欧美高清不卡在线| 欧美日韩一区二区免费视频| 亚洲欧美国产精品| 中文在线不卡视频| 亚洲人成毛片在线播放| 欧美视频中文字幕在线| 97国产suv精品一区二区62|