在 PHP 中,排序是数据处理的重要功能。以下是几种常见的排序方法:
### **1. 冒泡排序(Bubble Sort)**
冒泡排序通过不断比较相邻元素并交换位置,使较大的元素逐渐“冒泡”到数组的末尾。
```php
function bubble_sort($array) {
$count = count($array);
for ($i = 0; $i < $count; $i++) {
for ($j = $count - 1; $j > $i; $j--) {
if ($array[$j] < $array[$j - 1]) {
$tmp = $array[$j];
$array[$j] = $array[$j - 1];
$array[$j - 1] = $tmp;
}
}
}
return $array;
}
```
### **2. 插入排序(Insertion Sort)**
插入排序通过构建有序序列,将未排序数据插入到正确位置。
```php
function insert_sort($arr) {
$count = count($arr);
for ($i = 1; $i < $count; $i++) {
$tmp = $arr[$i];
$j = $i - 1;
while ($arr[$j] > $tmp && $j >= 0) {
$arr[$j + 1] = $arr[$j];
$j--;
}
$arr[$j + 1] = $tmp;
}
return $arr;
}
```
### **3. 选择排序(Selection Sort)**
选择排序每次找到最小元素并放到排序序列的起始位置。
```php
function select_sort($arr) {
$count = count($arr);
for ($i = 0; $i < $count; $i++) {
$k = $i;
for ($j = $i + 1; $j < $count; $j++) {
if ($arr[$k] > $arr[$j]) {
$k = $j;
}
}
if ($k != $i) {
$tmp = $arr[$i];
$arr[$i] = $arr[$k];
$arr[$k] = $tmp;
}
}
return $arr;
}
```
### **4. 快速排序(Quick Sort)**
快速排序采用分治策略,将数组分成两部分递归排序。
```php
function quick_sort($array) {
if (count($array) <= 1) {
return $array;
}
$key = $array[0];
$left_arr = array();
$right_arr = array();
for ($i = 1; $i < count($array); $i++) {
if ($array[$i] <= $key) {
$left_arr[] = $array[$i];
} else {
$right_arr[] = $array[$i];
}
}
$left_arr = quick_sort($left_arr);
$right_arr = quick_sort($right_arr);
return array_merge($left_arr, array($key), $right_arr);
}
```
### **5. PHP 内置排序函数**
PHP 提供了一些内置排序函数:
- `sort($array)`:对数组进行升序排序。
- `rsort($array)`:对数组进行降序排序。
- `asort($array)`:根据值对关联数组进行升序排序。
- `ksort($array)`:根据键对关联数组进行升序排序。
- `arsort($array)`:根据值对关联数组进行降序排序。
- `krsort($array)`:根据键对关联数组进行降序排序。