标签:jpg sort es2017 排序算法 过程 实现 分治 区间合并 nlog
1.归并算法步骤:
1>分解:将无序序列不断分裂,直到每个区间都只有一个数据为止(递归实现)
2>合并:将两个区间合并为有序区间,一直合并到只有一个区间为止(分治思想)
下面代码为归并过程:
//归并过程--将两个有序的数组合并成一个有序数组 void merge(int array[],int left,int middle,int right) { int *tempArray = new int[right-left+1]; int index1=left; int index2=middle+1; int i=0; while(index1<=middle&&index2<=right) { if (array[index1]<=array[index2]) tempArray[i++]=array[index1++]; else tempArray[i++]=array[index2++]; } while (index1<=middle) tempArray[i++]=array[index1++]; while (index2<=right) tempArray[i++]=array[index2++]; for(int j=0;j<i;++j) array[left+j]=tempArray[j]; delete[] tempArray; }
下图为递归和合并有序的过程(时间复杂度为NlogN)
//递归大法好 void MergeSort(int* array,int left,int right) { if(left>=right||array==NULL) return; //if(right-left<2) return ; int middle=(left+right)/2; MergeSort(array,left,middle); MergeSort(array,middle+1,right); merge(array,left,middle,right); }
标签:jpg sort es2017 排序算法 过程 实现 分治 区间合并 nlog
原文地址:http://www.cnblogs.com/zhaodun/p/7469777.html