Algorithm 如何编写更清晰的比较

Algorithm 如何编写更清晰的比较,algorithm,Algorithm,嗨,我不熟悉这个算法,所以我请求帮助进行这个简单的比较。所以我有两个大小为N的无符号整数数组,我需要比较哪一个更大。比较的方法是从左元素开始,如果A[I]大于B[I],那么A数组>B数组。如果它们相等,我比较A[I+1]和B[I+1]。一种暴力方式是: BOOL checkArray(int[] A, int[] B) { for(i=0; i< N; i ++){ if (A[i] > B[i]) { return TRUE;

嗨,我不熟悉这个算法,所以我请求帮助进行这个简单的比较。所以我有两个大小为N的无符号整数数组,我需要比较哪一个更大。比较的方法是从左元素开始,如果A[I]大于B[I],那么A数组>B数组。如果它们相等,我比较A[I+1]和B[I+1]。一种暴力方式是:

BOOL checkArray(int[] A, int[] B) {
    for(i=0; i< N; i ++){ 
       if (A[i] > B[i]) {
           return TRUE;
       }else if (A[i] == B[i]) {
           continue;
       } else {  \\ A[i] < B[i]
           return FALSE;
       }
    }
}
BOOL校验数组(int[]A,int[]B){
对于(i=0;iB[i]){
返回TRUE;
}else如果(A[i]==B[i]){
继续;
}else{\\A[i]

请告知是否有更好的方法来实现这一点。非常感谢

这是一个非常正常和有效的方法:)没有比这更好的了


如果所有元素都相等,请确保正确返回。

查看标准库的strcmp实现

bool checkArray (int [] a, int [] b)
{
  int
     i = 0;

  while (i < N && a [i] == b [i])
  {
    ++i;
  }

  return i < N && a [i] > b [i]; // return false if arrays equal
  //return i >= N || a [i] > b [i]; // return true if arrays equal
}
bool校验数组(int[]a,int[]b)
{
int
i=0;
而(ib[i];//如果数组相等,则返回false
//返回i>=N | a[i]>b[i];//如果数组相等,则返回true
}

但是,您的示例代码有一个未定义的函数外路径,即a的所有元素都等于B的所有元素。

基本上是可以的,但要遵循.NET比较模式,您应该返回一个整数。 这样,如果您需要,也可以直接使用它进行排序

我会这样实施:

public class StringArrayComparer : IComparer<String[]>
{
    #region IComparer<string[]> Members

    public int Compare(string[] x, string[] y)
    {
        if (x.Length != y.Length)
            throw new ArgumentException("The two arrays dont have same size");

        for (int i = 0; i < x.Length; i++)
        {
            int strComp = x[i].CompareTo(y[i]);
            if (strComp != 0)
                return strComp;
        }
        return 0;
    }

    #endregion
}
公共类StringArrayComparer:IComparer
{
#地区I比较成员
公共整数比较(字符串[]x,字符串[]y)
{
如果(x.长度!=y.长度)
抛出新ArgumentException(“两个数组的大小不同”);
对于(int i=0;i
我觉得没关系。但是在for循环的末尾需要一个
return(EQUAL)
(当所有a[i]都等于B[i]时)。根据您想要的结果,没有更有效的方法来实现这一点。你必须一个索引一个索引地比较,这将使算法O(n)@ypercube我确信你的意思是返回FALSE而不是相等:)当然,你还需要确保变量I在某个地方被声明为int…@Jimmy:,
TRUE
FALSE
或将函数的返回类型更改为具有3个选项。您可以将数组转换为字符串并使用字符串比较,因为大多数字符编码方便地生成与数字相同的比较值。。。(不是更快,但可能是更漂亮的代码)