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;
}