图解:2-路归并排序(递归实现 )

 划分过程:

//划分过程
void mergeSort(int A[],int left,int right){
	void merge(int A[],int L1,int R1,int L2,int R2);  //声明 
	if(left


合并过程:

//合并过程
#include 
const int maxn=100;
//L2==R1+1
void merge(int A[],int L1,int  R1,int L2,int R2){
	int i=L1,j=L2;
	int temp[maxn], index=0;
	while(i<=R1&&j<=R2){
		if(A[i]<=A[j]){
			temp[index++]=A[i++];
		}else{
			temp[index++]=A[j++];
		}
	}
	while(i<=R1){
		temp[index++]=A[i++];
	}
	while(j<=R2){
		temp[index++]=A[j++];
	}
	for(int i=0;i

举例实现:

#include 
const int maxn=100;

//划分过程
void mergeSort(int A[],int left,int right){
	void merge(int A[],int L1,int R1,int L2,int R2);  //声明 
	if(left


图解:摘自博主(冰冻火山)

你可能感兴趣的:(排序)