用php选择排序怎么办
时间 : 2023-04-26 00:22:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
选择排序是一种基本的排序算法,其思想是对于数组中的每一个元素,从未排序的剩余元素中选择最小的元素,与当前元素进行交换,从而实现整个数组的排序。下面是使用 PHP 实现选择排序的代码:
```php
<?php
function selectionSort(&$arr) {
$len = count($arr);
for ($i = 0; $i < $len - 1; $i++) {
$minIndex = $i;
for ($j = $i + 1; $j < $len; $j++) {
if ($arr[$j] < $arr[$minIndex]) {
$minIndex = $j;
}
}
list($arr[$i], $arr[$minIndex]) = array($arr[$minIndex], $arr[$i]);
}
}
$arr = array(64, 25, 12, 22, 11);
selectionSort($arr);
echo "排序后的数组:";
for ($i = 0; $i < count($arr); $i++) {
echo $arr[$i] . " ";
}
?>
在上面的代码中,我们定义了名为 selectionSort 的函数,接收一个数组参数 $arr,其中首先获取数组长度 $len,然后循环遍历数组,对于每一个元素,从未排序的剩余元素中找到最小的元素,再把它与当前元素进行交换。
在内层循环中,我们定义了变量 $minIndex,初始化为 $i,表示当前未排序的元素中最小值的下标,然后循环遍历未排序的剩余元素,如果找到比当前最小值更小的元素,就把 $minIndex 更新为该元素的下标。
最后,我们使用 PHP 的 list 函数来交换当前元素和最小元素的位置。循环结束后,整个数组就被排序了。
需要注意的是,在 PHP 中,如果传递一个数组给函数并对其进行排序,不需要返回值,因为数组是按引用传递的,函数对其进行的修改会反映在原数组中。
上面的代码可以输出以下结果:
排序后的数组:11 12 22 25 64
选择排序的时间复杂度为 $O(n^2)$,虽然其时间复杂度比较高,但它是一种简单、直观的排序算法,容易理解和实现,并且在小规模数据的排序应用中仍然具有一定的优势。
选择排序(Selection Sort)是一种简单的排序算法,它的主要思想是遍历数组,找到最小值,然后将其放置在数组的起始位置,再次遍历数组,找到次小值,放置在数组的第二个位置,以此类推,直到整个数组有序为止。选择排序时间复杂度为O(n^2),属于比较低效的算法。
下面是用PHP实现选择排序的示例代码:
```php
function selection_sort($arr){
$count = count($arr);
for ($i = 0; $i < $count - 1; $i++) {
$min_index = $i;
for ($j = $i + 1; $j < $count; $j++) {
if ($arr[$j] < $arr[$min_index]) {
$min_index = $j;
}
}
if ($min_index != $i) {
//交换两个位置的值
$temp = $arr[$i];
$arr[$i] = $arr[$min_index];
$arr[$min_index] = $temp;
}
}
return $arr;
}
该函数接收一个未排序的数组,其中$count变量表示数组的长度。在外部循环中,使用$min_index变量来记录最小值的下标,然后将其初始化为$i,以i为基准,内部循环从$i+1到$count-1,找到最小的值的下标,如果最小值的下标不等于$i,则交换两个位置的值。
接下来,我们可以测试一下这个函数:
```php
$arr = [2,4,1,5,3];
$arr_sorted = selection_sort($arr);
echo implode(",",$arr_sorted); //输出 1,2,3,4,5
实现选择排序是比较简单的,但其复杂度较高,因此在实际应用中,尤其是需要对大量数据进行排序时,推荐使用更高效的排序算法,例如快速排序或归并排序等。
上一篇
php是怎么实现登录成功
下一篇
php怎么修改表单向导出
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章