选择排序算法

来源:互联网 发布:怎么查看计算机端口 编辑:程序博客网 时间:2024/05/18 00:21

演示数组为:

$a = array(9 , 3, 5 , 8 , 2 , 7);

演算过程如下:

求得一个数组的最大值的下标,并将这个最大值下标的单元跟最后一个单元进行交换;

然后,继续从剩余数据中取得最大值的下标,并将这个最大值下标的单元跟剩余的最后一个单元交换

以此类推,直到只剩一个数据,就不用找了


规律描述:

1.      假设数组的数据有N个

2.      要进行查找最大值单元并进行交换的”趟数”为 N-1

3.      每一趟都要求出”剩余数据”中的最大值单元,并且,剩余数据的数量每一趟都少1个,第一趟有N个

4.      每一趟找出最大值单元后,都有进行交换: 最大值单元跟 剩余数据中的最后一个单元交换

/** *规律描述: *1.假设数组的数据有N个 *2.要进行查找最大值单元并进行交换的”趟数”为 N-1 *3.每一趟都要求出”剩余数据”中的最大值单元,并且,剩余数据的数量每一趟都少1个,第一趟有N个 *4.每一趟找出最大值单元后,都有进行交换: 最大值单元 跟 剩余数据中的最后一个单元交换 **/$n = count($a);for ($i=0; $i < $n-1; $i++) { //趟数//每一趟开始找其中的最大值$max = $a[0]; //找最大值先取得第一项的值$pos = 0; //找最大值的坐标也要先取得第一项的坐标for($k=0;$k<$n-$i;++$k){//这里$k也可以理解为下标if($a[$k] > $max){$max = $a[$k];$pos = $k;}}//前面一定可以获得最大值及其所在下标,即最大值单元//然后开始进行交换$temp = $a[$pos];$a[$pos] = $a[$n-$i-1]; //$n-$i-1就是剩余数据中的最后一个单元的下标$a[$n-$i-1] = $temp;}

0 0
原创粉丝点击