PHP 選擇排序 案例


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>選擇排序</title>
</head>
<body>
<!-- 假設第一個元素爲最大值max,其下標爲max_index, 通過循環找出每一行的最大值,
和當前行的最後一個未排序的數組元素進行位置交接,
重複如上步驟。排序的結果爲從小到大. -->
    <?php 
            $arr=array(10,30,20,50,40);
            $n=count($arr);
            //外層循環 
            for ($i=0; $i < $n-1; $i++) { 
                $max=$arr[0];
                $max_index=0;
            //內層循環查找沒有排序的最大值和 其下標
                for ($j=0; $j < $n-$i; $j++) { 
                    if ($arr[$j]>$max) {
                        $max=$arr[$j];
                        $max_index=$j;
                    }
                }
                    
                //沒有排序的最後一個索引爲
                $last_index=$n-$i-1;
                //將最大值和 沒有排序的值交換位置
                $tmp=$arr[$max_index];
                $arr[$max_index]=$arr[$last_index];
                $arr[$last_index]=$tmp;
            }

                echo "<pre>";
                print_r($arr);
                echo "</pre>";
                echo "<hr/>";
            

     ?>
    <!-- 總結:選擇排序 兩層循環 內層循環找最大值 外層循環 
將找到的最大值$arr[$max_index]和未排序的最後一個$arr[$last_index] 進行位置交換,
未排序的最後一個 $last_index=$n(數組長度)-$i(第幾次循環)-1; -->
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章