나는 스칼라에서 일반 이진 탐색 알고리즘을 구현하려고 시도했다. (의 xD)제네릭이 너무 일반적이지 않습니다!
type Ord ={
def <(x:Any):Boolean
def >(x:Any):Boolean
}
def binSearch[T <: Ord ](x:T,start:Int,end:Int,t:Array[T]):Boolean = {
if (start > end) return false
val pos = (start + end)/2
if(t(pos)==x) true
else if (t(pos) < x) binSearch(x,pos+1,end,t)
else binSearch(x,start,pos-1,t)
}
모든 것을 내가 실제로 그것을 사용하려고 할 때까지 OK입니다 : 여기있다
binSearch(3,0,4,Array(1,2,5,6))
컴파일러는 지능이 오드의 멤버가 아닌 척하지만, 나는 클래스를 알고 Int는 <
및 >
방법이 있습니다. 그럼이 이상한 문제를 해결하려면 어떻게해야합니까? 감사합니다.
내가 오드 당신의 코드를 찾고 int 유형의 것을 볼 수 없습니다 :
여기
Int
's 및String
년대와 예입니다. –