PHP快速排序算法的详细解决方案
这是百度百科全书的图片,非常形象:
快速排序算法是冒泡算法的优化。他的想法是第一个数组分割,把数值元素到一个临时数组的元素,小到另一个临时数组的值(分割点可以是任意一个元素的数组中的值,一般用第一个元素,数组{ 0 }),然后继续21临时数组重复分裂,最后把小的和大的数组元素在数组中的元素。递归的想法是用在这里。
PHP实现
复制代码代码如下所示:
*
快速排序
* /
功能快速排序(数组)
{
如果(!isset($array { 1 }))
返回数组;
美元=数组{ 0 };获取一个用于关键字的分割,通常是第一个元素。
leftarray美元=阵();
rightarray美元=阵();
foreach(数组$ V)
{
如果($ $ $中)
rightarray美元{ } = $ V; / /在一个数组中的美元数量较大的
如果(五元)
leftarray美元{ } = $ V; / /美元小于另一个数组中的数
}
leftarray美元= quicksort($ leftarray); / /把小阵再次分割
leftarray美元{ } = $中; / /元素的分割到后面的小阵,不能忘记它。
rightarray美元= quicksort($ rightarray); / /比较大的数组再分割
返回array_merge(leftarray美元,美元rightarray); / /组合的两个结果
}
冒泡算法的比较
在这里,我做了一个比较,与以前的冒泡算法,我们可以看到,该算法是更有效的比冒泡算法。
复制代码代码如下所示:
美元= array_rand(范围(13000),1500); / /当1600个或更多的冒泡算法的元素将提示内存,但这里为了两个测量之间的差异的大小,设置为1500,这也冒泡算法可以执行。
洗牌($ A);打乱了数组的顺序。
$ T1 =瞬时(真);
快速排序(合一); / /快速排序
$ T2 =瞬时(真的);
回声((($ T2至T1)×1000)。'ms;
要求('。 /冒泡。'/library/loader.php'); / /这里指那种冒泡算法,我以前写的
$ T1 =瞬时(真);
冒泡(合一); / /泡沫
$ T2 =瞬时(真的);
回声((($ T2至T1)×1000)。'ms;
运行结果:
复制代码代码如下所示:
12.10880279541ms
772.64094352722ms