首页 > 搜索 > 并归排序算法详解,经典排序之归并排序详解_weixin

并归排序算法详解,经典排序之归并排序详解_weixin

互联网 2020-10-24 13:48:33
在线算命,八字测算命理
归并排序 一.概述

这里归并的含义将两个或两个以上的有序表组合成一个新有序表,本文讲述二路归并排序。

二、排序过程 初始序列看成n个有序子序列,每个子序列长度为1两两合并,得到(n/2向下取整数)个长度为2或1的有序子序列再两两合并,重复直至得到一个长度为n的有序序列为止

二路归并排序主旨是“分解”与“归并”

分解:

1.将一个数组分成两个数组,分别对两个数组进行排序。

2.循环第一步,直到划分出来的“小数组”只包含一个元素,只有一个元素的数组默认为已经排好序。 归并:

1.将两个有序的数组合并到一个大的数组中。

2.从最小的只包含一个元素的数组开始两两合并。此时,合并好的数组也是有序的。

1.将两个顺序表合并成一个有序表

首先我们来看看两个顺序表是如何变成一个有序表的,实际上做法就是将两个指针指向两个数组,然后进行比较,看那个指针指向的数据小,将小的数据插入新的数组里,然后将这个指针加1.如图所示。

1513801-20181211235853883-1001958588.png

代码如下:

int [] mergeSort(int a[] , int b[],){int c[a.length + b.length] ;int i = 0; int j = 0;int k = 0;while (i < a.length && j < b.length){ if ( a[i] < b [j]){c[k ++] = a[i];i ++; }else{ c[k ++] = b[j]; j++; } } while ( i < a.length ){c[k] = a [i];i ++;k ++; } while ( j
免责声明:非本网注明原创的信息,皆为程序自动获取互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明(版权证明、身份证正反面、侵权链接),站长将在收到邮件12小时内删除。

相关阅读

一周热门

查看更多