说一说归并排序

归并排序:归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为O(n log n)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。

 

归并排序的核心思想是将两个有序的数列合并成一个大的有序的序列。通过递归,层层合并,即为归并。

 大数据培训,云培训,数据挖掘培训,云计算培训,高端软件开发培训,项目经理培训

 


如图,从下到上,每一步都需要将两个已经有序的子数组合并成一个大的有序数组,如下是实现合并的具体代码,请读者细细体会

大数据培训,云培训,数据挖掘培训,云计算培训,高端软件开发培训,项目经理培训

 1 void merge(int arr[],int l,int mid,int r) 2 { 3     int aux[r-l+1];//开辟一个新的数组,将原数组映射进去  4     for(int m=l;m<=r;m++) 5     { 6