归并排序MergeSort
墨初 知识笔记 55阅读
归并排序采用分而治之的方法解决问题,将问题分成更小的部分合并排序# region合并排序publistantaticvoidmergerestrade(double[]ArrayList,intstart,intention){ if(startend){ nbsp;int middle=(int)((start end)/2);MergeSort(arrayList,start,middle);MergeSort(arrayList,middle 1,end);Merge(arrayList,start,middle,end);} } privatesticvoidmerge(double[]arrayList,intstart,intmiddle,intent){ int first half=
yle="color: rgba(0, 0, 0, 1)"> middle - start + 1;int secondHalf = end - middle;
double[] first = new double[firstHalf + 1];
double[] second = new double[secondHalf + 1];
for(int m = 0; m < firstHalf; m++)
{
first[m] = arrayList[start+m];
}
for(int m = 0; m < secondHalf; m++)
{
second[m] = arrayList[middle+m+1];
}
first[firstHalf] = double.MaxValue;
second[secondHalf] = double.MaxValue;
int i = 0;
int j = 0;
for(int k=start;k <= end;k++)
{
if(first[i] <= second[j])
{
arrayList[k] = first[i];
i++;
}
else
{
arrayList[k] = second[j];
j++;
}
}
}
#endregion

标签: