欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

归并排序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

标签:
声明:无特别说明,转载请标明本文来源!