php选择排序

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值