合并排序MergeSort
合并排序采用的是一种分而治之的解决问题方法,将问题分小处理。
#region 合并排序
        
public static void MergeSort(double[] arrayList, int start,  int end)
        
{
            
if(start < end)
            
{
                
int middle = (int)((start+end)/2);
                MergeSort(arrayList, start, middle);
                MergeSort(arrayList, middle
+1, end);
                Merge(arrayList,start, middle, end);
            }


        }

        
private static void Merge(double[] arrayList, int start , int middle, int end)
        
{
            
int firstHalf = 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
posted on 2005-08-16 23:42  凌霄城上的狗  阅读(563)  评论(0)    收藏  举报