思路如下:
假设从小到大排序,首先,第一轮循环,从所有数组中,找出最小的元素,将其下标记录下来,然后确认该元素是否是第一个元素,如果不是第一个元素,则和第一个元素进行交换。
接下来,从第二个元素开始,再找出最小的一个元素,记录其下标,再和第二个进行交换。一直到最后,每一轮循环都会确定一个最小的元素,放在数组的前面。
案例:
$arr = [5, 2, 4, 7, 9, 4, 2, 6, 8, 3];
$lens = count($arr);
for ($i = 0; $i < $lens - 1; $i++) {//总循环的轮数
$min = $i;//初始化最小的坐标
for ($j = $i + 1; $j < $lens; $j++) {//每轮循环对比的次数
if ($arr[$min] > $arr[$j]) {//当前元素和最小值数组对比,谁小就记录下谁的下标
$min = $j;
}
}
if ($min > $i) {//如果最小值下标不是当前轮的第一个元素,则交换数据
$temp = $arr[$i];
$arr[$i] = $arr[$min];
$arr[$min] = $temp;
}
}
print_r($arr);
exit;