快速排序属于交换排序,是一种不稳定排序,平均时间复杂度为
O(nlog2^n)
,最好状况时间复杂度为O(nlog2^n)
,最坏状况时间复杂度为O(n^2)
。php
<?php function quickSort($array) { //判断参数是不是一个数组 if (!is_array($array)) return false; //递归出口:数组长度为1,直接返回数组 $length = count($array); if ($length <= 1) return $array; //数组元素有多个,则定义两个空数组 $left = $right = []; //使用for循环进行遍历,把第一个元素当作比较的对象 for ($i = 1; $i < $length; $i++) { //判断当前元素的大小 if ($array[$i] < $array[0]){ $left[] = $array[$i]; } else { $right[] = $array[$i]; } } //递归调用 $left = quickSort($left); $right = quickSort($right); //将全部的结果合并 return array_merge($left, [$array[0]], $right); } $array = [1, 3, 5, 18, 9, 2, 4, 6, 5, 0, 10, 29, 15]; print_r(quickSort($array));
个人博客即将搬运同步至腾讯云+社区,邀请你们一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2pegbhfy77y80数组