2015-04-01 79 views
0

我想要完成此合并排序方法,但出于某种原因,我显示错误“运算符< =未定义参数类型(s) T,T”运算符<=未定义为参数类型

的if语句

if(a[beginHalf1] <= a[beginHalf2]) 
     { 

     tempArray[index] = a[beginHalf1]; 
     beginHalf1++; 
     } 

这里是完整的代码

public static <T extends Comparable<? super T>> 
    void merge(T[] a, T[] tempArray, int first, int mid, int last){ 


      int beginHalf1 = first; 
      int endHalf1 = mid; 
      int beginHalf2 = mid +1; 
      int endHalf2 = last; 
      int index = 0; 

    while((beginHalf1 <= endHalf1) && (beginHalf2 <= endHalf2)) 
      { 

      if(a[beginHalf1] <= a[beginHalf2]){ 

      tempArray[index] = a[beginHalf1]; 
      beginHalf1++; 
     } 

     else 
     { 
      tempArray[index]=a[beginHalf2]; 
      beginHalf2++; 
     } 
    index++; 
    } 




    } // end merge 
+0

请在您的问题上添加语言标签(Java?)。并缩进代码,使其更具可读性。 – Barmar 2015-04-01 21:38:40

+0

在我的教科书中的另一个问题是,有一行代码表示“交换一个[indexFromLeft]和一个[indexFromRight]”我知道这个“并且”意味着&&但是“Exchange”是什么意思? – ANIME4154142 2015-04-01 22:13:17

+0

*但“Exchange”是什么意思?* - 开关?你确定'和'的意思是'&&'在那一行吗?因为'&&'通常被定义为'AND'。 – WonderWorld 2015-04-01 22:19:46

回答

1

运算符> = <是基本类型。你应该使用compareTo for T(如果它是可比较的)。

if(a[beginHalf1].compareTo(a[beginHalf2]) <= 0) 
+0

我的教科书中的另一个问题是有一行代码表示“交换一个[indexFromLeft]和一个[indexFromRight]”我知道这个“和”意味着&&但是“Exchange”是什么意思? – ANIME4154142 2015-04-01 22:10:52

相关问题