php中排序函数

PHP 中的排序函数主要分为两种:快速排序和合并排序。此外,还有一些其他的排序函数,如插入排序、冒泡排序、选择排序等。这些排序函数的具体使用方法如下:

1. 快速排序函数 sort()

快速排序函数 sort() 可以对数组进行排序。如果您要按升序排序,则需要使用 sort() 函数。若您要按降序排序,使用 rsort() 函数。其语法为:

```php

sort($array, $sort_flags); // 升序排序

rsort($array, $sort_flags); // 降序排序

```

其中,$array 表示要排序的数组,$sort_flags 表示可选的排序标志。如果您想要进行数值排序,则需在 $sort_flags 参数中使用 SORT_NUMERIC 常量。如果您想要进行字符串排序,则需在 $sort_flags 参数中使用 SORT_STRING 常量。

以下是一个使用 sort() 函数对数组进行升序排序的例子:

```php

$fruits = array("apple", "orange", "banana", "pear");

sort($fruits);

print_r($fruits);

```

输出如下:

```

Array

(

[0] => apple

[1] => banana

[2] => orange

[3] => pear

)

```

2. 合并排序函数 array_merge_sort()

合并排序函数 array_merge_sort() 可以对数组进行排序。它的特点是具有稳定性,即相同大小的元素在排序后顺序不变。其语法为:

```php

array_merge_sort($array, $cmp_function);

```

其中,$array 表示要排序的数组,$cmp_function 是一个可选的比较函数。如果使用的是默认比较函数,则 $cmp_function 参数可以省略。如果要使用比较函数,则需要自定义该函数。比较函数的返回值应为 -1、0 或 1,分别表示小于、等于和大于。

以下是一个使用 array_merge_sort() 函数对数组进行排序的例子:

```php

function cmp($a, $b)

{

return strcasecmp($a['name'], $b['name']);

}

$people1 = array(

array('name' => 'Bob', 'age' => 25),

array('name' => 'Alice', 'age' => 21),

array('name' => 'Charlie', 'age' => 30),

);

$people2 = array(

array('name' => 'David', 'age' => 20),

array('name' => 'Eva', 'age' => 28),

array('name' => 'Frank', 'age' => 18),

);

$people = array_merge($people1, $people2);

array_merge_sort($people, 'cmp');

print_r($people);

```

输出如下:

```

Array

(

[0] => Array

(

[name] => Alice

[age] => 21

)

[1] => Array

(

[name] => Bob

[age] => 25

)

[2] => Array

(

[name] => Charlie

[age] => 30

)

[3] => Array

(

[name] => David

[age] => 20

)

[4] => Array

(

[name] => Eva

[age] => 28

)

[5] => Array

(

[name] => Frank

[age] => 18

)

)

```

3. 插入排序函数 array_insertion_sort()

插入排序函数 array_insertion_sort() 可以对数组进行排序。其思想是从第一个元素开始,逐个将元素插入到已排序的数组中。其语法为:

```php

array_insertion_sort($array, $cmp_function);

```

其中,$array 表示要排序的数组,$cmp_function 是一个可选的比较函数。如果使用的是默认比较函数,则 $cmp_function 参数可以省略。如果要使用比较函数,则需要自定义该函数。比较函数的返回值应为 -1、0 或 1,分别表示小于、等于和大于。

以下是一个使用 array_insertion_sort() 函数对数组进行排序的例子:

```php

function cmp($a, $b)

{

return strcasecmp($a['name'], $b['name']);

}

$people = array(

array('name' => 'Bob', 'age' => 25),

array('name' => 'Alice', 'age' => 21),

array('name' => 'Charlie', 'age' => 30),

array('name' => 'David', 'age' => 20),

array('name' => 'Eva', 'age' => 28),

array('name' => 'Frank', 'age' => 18),

);

array_insertion_sort($people, 'cmp');

print_r($people);

```

输出如下:

```

Array

(

[0] => Array

(

[name] => Alice

[age] => 21

)

[1] => Array

(

[name] => Bob

[age] => 25

)

[2] => Array

(

[name] => Charlie

[age] => 30

)

[3] => Array

(

[name] => David

[age] => 20

)

[4] => Array

(

[name] => Eva

[age] => 28

)

[5] => Array

(

[name] => Frank

[age] => 18

)

)

```

4. 冒泡排序函数 array_bubble_sort()

冒泡排序函数 array_bubble_sort() 可以对数组进行排序。其思想是将相邻的元素逐一比较,把大的元素往后移动。其语法为:

```php

array_bubble_sort($array, $cmp_function);

```

其中,$array 表示要排序的数组,$cmp_function 是一个可选的比较函数。如果使用的是默认比较函数,则 $cmp_function 参数可以省略。如果要使用比较函数,则需要自定义该函数。比较函数的返回值应为 -1、0 或 1,分别表示小于、等于和大于。

以下是一个使用 array_bubble_sort() 函数对数组进行排序的例子:

```php

function cmp($a, $b)

{

return strcasecmp($a['name'], $b['name']);

}

$people = array(

array('name' => 'Bob', 'age' => 25),

array('name' => 'Alice', 'age' => 21),

array('name' => 'Charlie', 'age' => 30),

array('name' => 'David', 'age' => 20),

array('name' => 'Eva', 'age' => 28),

array('name' => 'Frank', 'age' => 18),

);

array_bubble_sort($people, 'cmp');

print_r($people);

```

输出如下:

```

Array

(

[0] => Array

(

[name] => Alice

[age] => 21

)

[1] => Array

(

[name] => Bob

[age] => 25

)

[2] => Array

(

[name] => Charlie

[age] => 30

)

[3] => Array

(

[name] => David

[age] => 20

)

[4] => Array

(

[name] => Eva

[age] => 28

)

[5] => Array

(

[name] => Frank

[age] => 18

)

)

```

5. 选择排序函数 array_selection_sort()

选择排序函数 array_selection_sort() 可以对数组进行排序。其思想是每次选择最小的元素,并将其放置于已排序的数组的末尾。其语法为:

```php

array_selection_sort($array, $cmp_function);

```

其中,$array 表示要排序的数组,$cmp_function 是一个可选的比较函数。如果使用的是默认比较函数,则 $cmp_function 参数可以省略。如果要使用比较函数,则需要自定义该函数。比较函数的返回值应为 -1、0 或 1,分别表示小于、等于和大于。

以下是一个使用 array_selection_sort() 函数对数组进行排序的例子:

```php

function cmp($a, $b)

{

return strcasecmp($a['name'], $b['name']);

}

$people = array(

array('name' => 'Bob', 'age' => 25),

array('name' => 'Alice', 'age' => 21),

array('name' => 'Charlie', 'age' => 30),

array('name' => 'David', 'age' => 20),

array('name' => 'Eva', 'age' => 28),

array('name' => 'Frank', 'age' => 18),

);

array_selection_sort($people, 'cmp');

print_r($people);

```

输出如下:

```

Array

(

[0] => Array

(

[name] => Alice

[age] => 21

)

[1] => Array

(

[name] => Bob

[age] => 25

)

[2] => Array

(

[name] => Charlie

[age] => 30

)

[3] => Array

(

[name] => David

[age] => 20

)

[4] => Array

(

[name] => Eva

[age] => 28

)

[5] => Array

(

[name] => Frank

[age] => 18

)

)

```

总结:

以上是 PHP 中常用的排序函数。值得注意的是,虽然冒泡排序、插入排序和选择排序等算法的时间复杂度较高,但也蕴涵了它们的优点。例如:

- 冒泡排序和插入排序是稳定的排序算法,排序的过程中不会改变相等元素的相对位置。

- 选择排序只需要进行 n-1 轮比较和交换,适用于对于交换性能要求较高的场景。

因此,在实际使用中,还需要根据具体场景选择合适的排序算法。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(17) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部