从两个数组中寻找相同的值

两个数组中找相同的值

  • 时间复杂度为n^2 的方法
  • 时间复杂度为n + n O(n) 的方法

时间复杂度为n^2 的方法

/// 
/// 时间复杂度为n^2 方法一
/// 
/// 
/// 
private void GetSame1(int[] a, int[] b)
{
    for (int i = 0; i < a.Length; i++)
    {
        for (int j = 0; j < b.Length; j++)
        {
            if (a[i] == b[j])
            {
                Debug.LogError(a[i]);
            }
        }
    }
}

时间复杂度为n + n O(n) 的方法

/// 
/// 时间复杂度为n + n  O(n) 方法二
/// 
/// 
/// 
private void GetSame2(int[] a, int[] b)
{
    int i = 0, j = 0;
    while (i < a.Length && j < b.Length)
    {
        if (a[i] > b[j]) j++;
        else if (a[i] < b[j]) i++;
        else
        {
            Debug.LogError(a[i]);
            i++; j++;
        }
    }
}

void GetSame3(int[] arr1,int[] arr2)
{
    int[] tmp = new int[arr1.Length + arr2.Length];
    arr1.CopyTo(tmp, 0);
    arr2.CopyTo(tmp, arr1.Length);

}

你可能感兴趣的:(C#高级,数学相关,算法,开发语言)