java算法-二分查找法

    二分查找法的前提是數據必須是有序排列的數據,若是不是那將失去二分查找法的意義。java

其中二分查找法有兩種實現方式while遞歸方法實現。下面咱們來看下它的代碼。spa

public class maxtest {
	public static void main(String[] args) {
		//###################二分查找法start###################//
		int[] arrays = {113,16,24,22,218,25,23,8,13,6,215,123,218,113,14,222,28,213,4,2,17,5,12,117,15,122,18,26,214,212,117,216};
		int temporary;
		for (int j = 0; j < arrays.length-1; j++) {
			for (int i = 0; i < arrays.length; i++) {
				if (arrays.length-1 == i) {
					break;
				}else{
					if (arrays[i] > arrays[i+1]) {
						temporary = arrays[i];
						arrays[i] = arrays[i+1];
						arrays[i+1] = temporary;
					}
				}
			}
		}
		for (int i = 0; i < arrays.length; i++) {
			System.out.print(arrays[i]+" ");
		}
		System.out.println("\n調用遞歸方法結果:"+binarySearch(arrays,0,arrays.length-1,24));//遞歸方法調用
		System.out.println("\n調用while方法結果:"+binarySearch(arrays,24));//while方法調用
		//###################二分查找法start###################//
	}
	
	
	//二分查找法遞歸實現
	public static int binarySearch(int[] arrays, int start, int end,int des){
		int mid=(start+end)/2;
		if (arrays[mid] == des) {
			return mid;
		}
		if (start >= end) {
			return -1;
		}else if (arrays[mid] < des) {
			return binarySearch(arrays, mid+1, end, des);
		}else if(arrays[mid] > des){
			return binarySearch(arrays, start, mid-1, des);
		}
		return -1;
	}  
	
	//二分查找法while實現
	public static int binarySearch(int[] arrays, int des){
		int mid=arrays.length/2;
		if (arrays[mid] == des) {
			return des;
		}
        int low = 0;   
        int high = arrays.length-1;   
        while(low <= high) {   
            int middle = (low + high)/2;   
            if(des == arrays[middle]) {   
                return middle;   
            }else if(des <arrays[middle]) {   
                high = middle - 1;   
            }else {   
                low = middle + 1;   
            }  
        }  
        return -1;  
	}

結果以下:code

2 4 5 6 8 12 13 14 15 16 17 18 22 23 24 25 26 28 113 113 117 117 122 123 212 213 214 215 216 218 218 222 
調用遞歸方法結果:14

調用while方法結果:14

示意圖遞歸

相關文章
相關標籤/搜索