怎么新建MySQL数据库

发布时间:2022-08-15 作者:admin
阅读:310
在这篇文章中,我们来学习一下“PHP中实现归并排序的方法及过程是什么”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。

在我们日常的程序开发时候,有时候需要对一个已知的集合按照一定的规则进行排序,其实当数据的规模不太大时或者数据的有序特征比较明显,其实我们可以采用其它的排序算法例如:Bubble Sort, Insertion Sort ,  Shell Sort 等。 但是前面3中算法的共同特点是,都是从原始的列表里把元素两两取出,然后进行比较,显然冒泡排序和插入排序使用了太多的比较,在数据规模增大时,优势明显下降(主要是以每种算法的复杂度O为参考)。所以这里我们可以尝试用替代法,可以尝试将列表分成更小的子列表然后对他们排序,在排序完更小的子列表后,再将小的子列表合并成一个有序列表,这种方法就是典型的“分治法”,分而治之,逐个克服.(Divide and Conquer).

一般来说,如果一个问题太难以至于无从下手,我们可以尝试将它分成较小的子问题,然后尝试解决这些子问题,最后把这些子问题的结果合并起来。从而解决原始问题。

下图是以一个较短的数组为例来展示整个排序过程:

下面是用PHP code 实现的,以上面的元素为例,着这里主要是借用PHP的2个函数来完成的(array_slice,array_splice).

 

 1 <?php
 2 
 3 
 4 $input = array(6,3,2,7,1,5,8,4);
 5 
 6 
 7 function merge_sort($arr)
 8 {
 9     if(count($arr) <= 1){
10         return $arr;
11     }
12 
13     $left = array_slice($arr,0,(int)(count($arr)/2));
14     $right = array_slice($arr,(int)(count($arr)/2));
15 
16     $left = merge_sort($left);
17     $right = merge_sort($right);
18 
19     $output = merge($left,$right);
20 
21     return $output;
22 
23 }
24 
25 
26 function merge($left,$right)
27 {
28     $result = array();
29 
30     while(count($left) >0 && count($right) > 0)
31     {
32         if($left[0] <= $right[0]){
33             array_push($result,array_shift($left));
34         }else{
35             array_push($result,array_shift($right));
36         }
37     }
38 
39     array_splice($result,count($result),0,$left);
40     array_splice($result,count($result),0,$right);
41 
42     return $result;
43 
44 
45 
46 }
47 
48 
49 $output = merge_sort($input);
50 echo  "<pre>";
51 print_r($output);
52 echo  "</pre>"
53 ?>

关于“PHP中实现归并排序的方法及过程是什么”就介绍到这了,如果大家觉得不错可以参考了解看看,如果想要了解更多,欢迎关注群英网络,小编每天都会为大家更新不同的知识。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

二维码-群英

长按识别二维码并关注微信

更方便到期提醒、手机管理

7*24 全天候服务

售前 400-678-4567

售后 0668-2555666

售后 400 678 4567

信息安全 0668-2555 118

域名空间 3004329145