2010-05-21 3 views
1

내가 점프 검색 알고리즘을 수행하고 있지만, 여기에 동안은 그 요소가 배열에없는 보여줘은 점프는 검색 알고리즘

import java.math.*; 

public class jamp { 

    public static int min(int a,int b) { 
     return a<b?a:b; 
    } 

    public static void main(String[]args) { 
     int a[]=new int[]{3,7,9,12,14,15,16,17,18}; 
     int l=14; 
     System.out.println(jumpsearch(a,a.length,l)); 
    } 

    public static int jumpsearch(int a[],int n, int l) { 
     int t=0; 
     int b=(int)Math.sqrt(n); 
     while (a[min(b,n)-1]<t){ 
      t=b; 
      b=b+(int)Math.sqrt(n); 
      if (t>=n) return -1 ; 
     } 
     while (a[t]<l){ 
      t=t+1; 
      if (t==min(b,n))  
       return -1 ; 
      if (a[t]==l) { 
       return t; 
      } 
     } 
     return -1; 
    } 
} 

이 도움을 주시기 바랍니다 코드

입니다

+5

조언 친절 조각하는 데 도움이 : 당신의 변수를 제공 중지 한 글자의 이름을 사용하면 코드를 많이 만들지 않아도 생성하기가 매우 어렵습니다. 변수 이름을 적절히 지정하는 습관을 가지면 향후 코드 친구가 행복한 야영자가 될 수 있습니다. –

+0

Eclipse 또는 NetBeans와 같이 가장 잘 알려진 Java IDE에서 찾을 수있는 디버거를 사용하여 코드를 한 줄씩 단계별로 실행하고 어떤 일이 발생하는지 따릅니다. – Jesper

답변

1

변경

while (a[min(b,n)-1]<t){ 

~

while (a[min(b,n)-1]<l){ // t should be l 

article에 따르면 값은 검색 키 여야합니다. 나는이 변화 프로그램을 실행하면 나는 여기

+0

감사합니다. 대단히 감사합니다. –

0

4. 점프 검색 (다른 방법) 내 샘플 예이다 얻을 : - 희망이

public class JumpSearch { 
    public static void main(String[] args) { 
     int[] arr= {0,1,2,3,4,5,5,9,12,14,15,15}; 
     System.out.println("Element found at: "+search(arr,15)); 
    } 
    public static int search (int[] arr,int key){ 
     int length= arr.length; 
     int start=0; 
     int jump=(int) Math.sqrt(length); 
     for(int i=0;i<length;i+=jump){ 
      if(arr[i]==key){ 
       return i; 
      } 
      else if(arr[i]>key){ 
       start=arr[i-jump]; 
       break; 
      }else{ 
       start=i+1; 
      } 
     } 
     for(int i=start;i<arr.length;i++){ 
      if(arr[i]==key){ 
       return i; 
      } 
     } 
     return -1; 
    } 
}