正文

【原创】两个有序数组相关的算法2010-03-17 23:09:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/edwardguo/50796.html

分享到:

1、将两个有序数组合并为一个有序数组 int[] MergeArray(int[] arrayX, int[] arrayY){    int arrayXCount = arrayX.Count;    int arrayYCount = arrayY.Count;    int totalCount = arrayXCount + arrayYCount;    int[] mergedArray = new int[totalCount];    int i=0,j=0;    while((i!=arrayXCount)&&(j!=arrayYCount))    {        if(arrayX[i] <= arrayY[j])        {            mergedArray[i+j] = arrayX[i];            i++;                        }        else        {            mergedArray[i+j] = arrayY[j];            j++;        }    }} 2、找出两个排好序的数组中的不同数据,要求最优算法 List<int> MergeArray(int[] arrayX, int[] arrayY){    int arrayXCount = arrayX.Count;    int arrayYCount = arrayY.Count;    int i=0,j=0;    List<int> resultArray = new List<int>();    while((i!=arrayXCount)&&(j!=arrayYCount))    {        if(arrayX[i] < arrayY[j])        {            resultArray.Add(arrayX[i]);            i++;        }        else if (arrayX[i] > arrayY[j])        {            resultArray.Add(arrayY[j]);            j++;        }        else        {            i++;            j++;           }    }    return resultArray;}   3、 两个有序数组A,B,查出只在a中有的数。 要求时间复杂度为 O(m+n); List<int> GetUniqueArrayA(int[] arrayX, int[] arrayY){    int arrayXCount = arrayX.Count;    int arrayYCount = arrayY.Count;    int i=0,j=0;    List<int> resultArray = new List<int>();    while((i!=arrayXCount)&&(j!=arrayYCount))    {        if(arrayX[i] < arrayY[j])        {            resultArray.Add(arrayX[i]);            i++;        }        else if (arrayX[i] > arrayY[j])        {            j++;        }        else        {            i++;            j++;           }    }    return resultArray;}  

阅读(7491) | 评论(5)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册