2018黑马程序
<?php
/*
规律总结:
1,要进行从头到尾找出其中的最大值(及下标),并进行交换的趟数为$n-1,$n为数组长度
2,每一趟要做的事情是:a)找最大值,吧)并将该最大值跟这一趟的最后一项进行交换;
每一趟要从中找最大值的数据个数都比前一趟少1,其中第一趟有$n个。
*/
$arr1 = array(18, 22, 12, 15, 23, 9);
//implode("字符", $数组):将该数组的所有项用给定字符“连接起来”
echo "<br>交换前:" . implode(',' , $arr1);
$n = count($arr1);
//控制进行从中找最大值的趟数:
for($i = 0; $i < $n - 1; $i++)
{
//a)找最大值(及下标):
//这个循环是在其中某一趟中从前(若干)个数据中找最大值
$max = $arr1[0]; //取出这些数据中的第一项,并该变量作为最大值
$max_key = 0; //对应的下标
for($k = 0; $k < $n - $i; $k++)
{
if($arr1[$k] > $max)
{
$max = $arr1[$k];
$max_key = $k;
}
}
//b)交换:
$temp = $arr1[$max_key]; //$max_key为这一趟找出来的最大值的下标
$arr1[$max_key] = $arr1[$n-1-$i]; //$n-1-$i为这一趟最后一项的下标
$arr1[$n-1-$i] = $temp;
}
echo "<br>交换后:" . implode(',' , $arr1);