八种排序的关系:
一、基本思想
归并排序将两个有序表合并·成一个新的有序表, 即把待排序的序列分成若干个子序列,每个序列都是有序的,然后将有序子序列合并成整体有序序列。
二、实例
三、实现过程解析
归并排序的核心经过两个分解, 合并,
分解: 由于合并中合并的序列必须为有序序列, 如何选择, 不断的惊醒分解, 分解到成一个元素的序列,那一定是一个有序的序列,这就要借助递归, 将一个源序列拆分成一个个有序的序列
然后就是进行合并。
3.1 、合并,将两个有序的序列合并成一个有序的序列
首先来看合并部分, 提供连个子序列, 设定为有序的
数组data[] 中
left … center
center … right
合并就是将者两个子序列进行合并。
创建一个临时数组用于存储这个序列的元素, 长度为两个子序列的长度:
int tmpArr = new int[right-left+1];
定义一个变量用于存储存到临时数组中的索引
int third = left;
定义一个变量作为第二个元素的索引记录
int tmp=left;
int mid = center+1;
因为两个子序列都是有序序列, 所以从两个序列中依次拿出元素比较, 小的元素存入临时数组中。
while(left
关注
打赏
