畫江湖之演算法篇 [排序演算法] 選擇排序

Krisji發表於2019-03-20

1 選擇排序簡介

概括:

  • 選擇排序(Selection-sort)是一種簡單直觀的排序演算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。小夥伴們仔細看下面的動態圖哦

完整程式碼塊

public static function select($array){
        $count=count($array);
        for($i=0;$i<$count-1;$i++){
            /*findtheminest*/
            $min=$i;
            // echo'$min-->'.$array[$min].'-->';
            for($j=$i+1;$j<$count;$j++){
                //由小到大排列
                if($array[$min]>$array[$j]){
                    //表明當前最小的還比當前的元素大
                    $min=$j;
                    //賦值新的最小的
                }
            }
            // echo$array[$min].'coco<br/>';
            /*swap$array[$i]and$array[$min]即將當前內迴圈的最小元素放在$i位置上*/
            if($min!=$i){
                $temp=$array[$min];
                $array[$min]=$array[$i];
                $array[$i]=$temp;
            }
        }
        return $array;
    }

2 分析程式碼塊 具體分析到程式碼註釋哦 ~

選擇排序

public static function select($array){
        $count=count($array);//取出陣列的總長度
        for($i=0;$i<$count-1;$i++){//外部迴圈 依次迴圈
            /* 找出最小的元素 開始*/
            $min=$i;//查詢到最低的元素
            for($j=$i+1;$j<$count;$j++){
                //由小到大排列
                if($array[$min]>$array[$j]){//如果當前的元素比後面的元素大
                    $min=$j;//就把最小的元素指標替換成後面元素
                }
            }
            /* 找出最小的元素 結束*/

            /*swap$array[$i]and$array[$min]即將當前內迴圈的最小元素放在$i位置上*/
            if($min!=$i){//如果找出的最小的元素不在當前的迴圈的索引位置
                $temp=$array[$min];//當前元素儲存臨時變數
                $array[$min]=$array[$i];//把最小位置上的元素替換成當前的元素
                $array[$i]=$temp;//把當前的元素替換成最小的元素
            }
        }
        return $array;
    }

3 時間複雜度 分析

file

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章