一步步学习数据结构和算法之归并排序效率分析及java实现

归并排序效率分析及java实现:
public class Merge {
 /**
  * 归并排序原理:先拆分,再合并,归并排序首先将序列进行拆分直到每个序列不能拆分为止,
  * 然后对序列进行两两合并(合并的过程需要排序),知道最终只存在一个序列为止
  *
  * 归并排序效率分析:归并排序运行的时间复杂度为O(nlogn) 空间代价为O(n)
  *
  * 最好情况和最差情况下时间复杂度均为O(nlogn),归并排序是一种稳定的外部排序算法
  *
  * 归并排序C 代码递归方式实现(当然可以对其采用迭代方式实现)
  *
  * void mergeSort(int[] array,int n)
  * {
  * if(n>1) //当序列长度大于1时进行拆分
  * {
  * int *list1 = array;
  * int list1_size = 2/n;
  * int *list2 = array+2/n;
  * int list2_size = n-list1_size;
  *
  * mergeSort(list1,list1_size); //对序列进行拆分
  * mergeSort(list2,list2_size);
  *
  * merging(list1,list1_size,list2,list2_size);//对两个序列进行合并
  * }
  * }
  *
  * void merging(int *list1,int list1_size,int *list2,int list2_size)
  * {
  * int i,j,k,m;
  * int temp[maxsize];
  * i=j=k=0;
  * while(i<list1_size&&j<list2_size) /将两个序列元素进行合并
  * {
  * if(list1[i]<list2[j])
  * {
  * temp[k++] = list1[i++];
  * }else{
  * temp[k++] = list2[j++];
  * }
  * }
  *
  * while(i<list1_size) //将序列中剩余元素添加到temp中,两个序列中最多只会有一个序列包含剩余元素
  * {
  * temp[k++] = list1[i++];
  * }
  *
  * while(i<list1_size)
  * {
  * temp[k++] = list1[i++];
  * }
  *
  * for(m=0,m<(list1_size+list2_size);m++)
  * {
  * list1[m] = temp[m];
  * }
  * }
  *
  */
 
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值