php实现选择排序法
时间: 2023-07-02 18:05:31 浏览: 50
以下是 PHP 实现选择排序算法的示例代码:
```php
function selectionSort(array $arr): array
{
$n = count($arr);
for ($i = 0; $i < $n - 1; $i++) {
$minIndex = $i;
for ($j = $i + 1; $j < $n; $j++) {
if ($arr[$j] < $arr[$minIndex]) {
$minIndex = $j;
}
}
$temp = $arr[$i];
$arr[$i] = $arr[$minIndex];
$arr[$minIndex] = $temp;
}
return $arr;
}
```
该函数接收一个数组作为输入,返回一个按升序排列的新数组。它使用了选择排序算法,首先从第一个元素开始,找到数组中最小的元素,将其与第一个元素交换位置。然后,再从第二个元素开始,找到剩余元素中最小的元素,将其与第二个元素交换位置。重复这个过程,直到整个数组都被排序。
相关问题
php语言实现冒泡排序法
好的,下面是php语言实现冒泡排序法的示例代码:
```
function bubbleSort($arr) {
$len = count($arr);
for ($i = 0; $i < $len - 1; $i++) {
for ($j = 0; $j < $len - $i - 1; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
}
}
}
return $arr;
}
$arr = [3, 2, 5, 1, 4];
$result = bubbleSort($arr);
print_r($result);
```
这段代码定义了一个名为`bubbleSort`的函数,它接受一个整数数组作为参数,并返回经过冒泡排序后的数组。在函数中,我们使用双重循环来比较相邻的元素,如果前一个元素比后一个元素大,则交换它们的位置,直到数组完全有序为止。最后,将排序后的数组返回。在示例代码中,我们传入了一个测试数组`[3, 2, 5, 1, 4]`,并将排序后的结果打印出来。
写一段php代码,能够实现常用排序算法
以下是使用PHP语言实现几种常用排序算法的示例代码:
1. 冒泡排序
```
function bubbleSort($arr) {
$len = count($arr);
for ($i = 0; $i < $len - 1; $i++) {
for ($j = 0; $j < $len - $i - 1; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $tmp;
}
}
}
return $arr;
}
```
2. 选择排序
```
function selectSort($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;
}
}
if ($minIndex != $i) {
$tmp = $arr[$i];
$arr[$i] = $arr[$minIndex];
$arr[$minIndex] = $tmp;
}
}
return $arr;
}
```
3. 插入排序
```
function insertSort($arr) {
$len = count($arr);
for ($i = 1; $i < $len; $i++) {
$j = $i;
while ($j > 0 && $arr[$j] < $arr[$j - 1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j - 1];
$arr[$j - 1] = $tmp;
$j--;
}
}
return $arr;
}
```
4. 快速排序
```
function quickSort($arr) {
$len = count($arr);
if ($len <= 1) {
return $arr;
}
$pivotIndex = (int)($len / 2);
$pivot = $arr[$pivotIndex];
$left = [];
$right = [];
for ($i = 0; $i < $len; $i++) {
if ($i == $pivotIndex) {
continue;
}
if ($arr[$i] < $pivot) {
$left[] = $arr[$i];
} else {
$right[] = $arr[$i];
}
}
return array_merge(quickSort($left), [$pivot], quickSort($right));
}
```
以上代码仅作为示例,实际使用时还需要进行测试和优化。