자바 의 두 가지 검색 알고리즘 방식

1105 단어 JAVA
public class TestFind {

	//               ,                     
	public static int findOut(int[] arr, int data) {
		for (int i = 0; i < arr.length; i++) {
			if (data == arr[i]) {
				return i;
			} else {
				System.out.println("    !     !");
			}
		}
		return -1;
	}

	//                 ,                     
	public static int findBinary(int[] arr, int left, int right, int data) {
		//                 
		if (left <= right) {
			// 1.            
			int p = (left + right) / 2;
			// 2.               ,                  
			if (data == arr[p]) {
				return p;
			}
			// 3.           ,           ,      ,    
			else if (data < arr[p]) {
				return findBinary(arr, left, p - 1, data);
			}
			// 4.           ,           ,      ,    
			else {
				return findBinary(arr, p + 1, right, data);
			}
		} else {
			return -1;
		}

	}

	public static void main(String[] args) {
		int[] arr = { 10, 20, 30, 40, 50, 60 };
		int num = 50;
		int len = arr.length;
		int p = findBinary(arr, 0, len, num);
		System.out.println("               :" + p);
	}

}

좋은 웹페이지 즐겨찾기