首頁  >  文章  >  每日程式設計  >  選擇排序演算法詳細解析

選擇排序演算法詳細解析

**熬夜选手
**熬夜选手原創
2020-05-01 15:54:45312瀏覽

選擇排序

選擇排序是表現最穩定的排序演算法之一,當用到它的時候,資料規模越小越好。理論上講,選擇排序可能也是平時排序一般人想到最多的方法。

選擇排序是一種簡單直覺的排序演算法。它的工作原理是:

遍歷一個數組,在此過程中,找出數組中的最大值及其位置。然後將該最大值的單元,跟數組的最後一個單元“交換位置”,這樣進行一趟,數組中的最大值就一定放在最後位置了。

將上述過程中剩餘的資料繼續遍歷一次,並做同樣的事情,則此時剩餘部分的最大值也能夠放在剩餘部分的最後位置-對整體而言就是倒數第二的位置。

依此類推。 。 。 。 。 。

圖示:

##923第二趟18#912152223第三趟#15912182223第四趟12915182223第五趟912151822#23
#原始陣列
# 18 22
12 15 23
9
#第一趟 18
22 #12 15

程式碼如下:

<?php
        $arr1 = array(18,22,12,15,23,9);
        $n = count($arr1);
        for ($i=0; $i < $n-1; $i++) { 
            //找最大值
            $max = $arr1[0];
            $max_key = 0;
            for ($k=0; $k < $n - $i; $k++) { 
                if ($arr1[$k] > $max) {
                    $max = $arr1[$k];
                    $max_key = $k;
                }
            }
            //交换
            $temp = $arr1[$max_key];
            $arr1[$max_key] = $arr1[$n-1-$i];
            $arr1[$n-1-$i] = $temp;
        }

總結法則:

1.要進行從頭到尾找出其中的最大值(及下標),並進行交換的趟數為$n-1,$n為數組長度

#2.每一趟要做的事情是:a)找最大值,吧)並將該最大值跟這一趟的最後一項進行交換;

3.每一趟要從中找最大值的資料個數都比前一趟少1,其中第一趟有$n個。



#

以上是選擇排序演算法詳細解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn