$length = count($list); for ($i = 0; $i < $length; $i++) { $key = $i; for ($j = $i + 1; $j < $length; $j++) { if ($list[$j] < $list[$key]) { $key = $j; } } $temp = $list[$key]; $list[$key] = $list[$i]; $list[$i] = $temp; } return $list; } $list = array(3, 6, 2, 4, 10, 1, 9, 8, 5, 7); var_dump(selectSort($list)); /** * 分析: * 原数组:[ 3 ,6 ,2 ,4 ,10 ,1 ,9 ,8 ,5 ,7 ] * key:5 * [ 1 ,6 ,2 ,4 ,10 ,3 ,9 ,8 ,5 ,7 ] * key:2 * [ 1 ,2 ,6 ,4 ,10 ,3 ,9 ,8 ,5 ,7 ] * key:5 * [ 1 ,2 ,3 ,4 ,10 ,6 ,9 ,8 ,5 ,7 ] * key:3 * [ 1 ,2 ,3 ,4 ,10 ,6 ,9 ,8 ,5 ,7 ] * key:8 * [ 1 ,2 ,3 ,4 ,5 ,6 ,9 ,8 ,10 ,7 ] * key:5 * [ 1 ,2 ,3 ,4 ,5 ,6 ,9 ,8 ,10 ,7 ]
function testArrayData() { $aData = ''; $aData = array(3, 2, 4, 1, 6, 0); responseArray($aData, '原来顺序'); responseArray(selectSort($aData), '选择排序'); responseArray(quickSort($aData), '快速排序'); responseArray(insertSort($aData), '插入排序'); responseArray(bubbleSort($aData), '冒泡排序'); responseArray(reQuickSort($aData), '反序排序'); echo '<b>最 大 值:</b>' . $GLOBALS['PHPMax']($aData) . '<hr>'; echo '<b>最 小 值:</b>' . $GLOBALS['PHPMin']($aData) . '<hr>'; }
<?php //选择排序法--选取最小值 $arr = array(72, 34, 9, 4, 52, 16, 1); function selectSort(&$arr) { $temp = 0; for ($i = 0; $i < count($arr) - 1; $i++) { //假设$i就是最小的数 $minVal = $arr[$i]; //记录我认为的最小数的下标 $minIndex = $i; for ($j = $i + 1; $j < count($arr); $j++) { if ($minVal > $arr[$j]) { //说明我们认为的最小值不是实际的最小值 $minVal = $arr[$j]; $minIndex = $j; } } //最后交换 $temp = $arr[$i]; $arr[$i] = $arr[$minIndex]; $arr[$minIndex] = $temp; } } //调用函数 selectSort($arr); //输出 print_r($arr);
<?php $list = [5, 4, 1, 7, 9, 2, 0, 3, 6, 8]; function selectSort(&$list) { $length = count($list); for ($i = 0; $i < $length; $i++) { $min = $list[$i]; $index = $i; for ($j = $i + 1; $j < $length; $j++) { if ($min > $list[$j]) { $min = $list[$j]; $index = $j; } } $tmp = $list[$i]; $list[$i] = $min; $list[$index] = $tmp; } } selectSort($list);