遞迴是一種重要的程式設計思想,在學習資料結構時,經常用到遞迴的思想。就是讓函式在一定條件下不斷的呼叫自己,從而求解。思考起來邏輯更為簡單,**更加簡潔,但是也容易出現死迴圈,並且**的擴充套件性和可讀性不好。今天我寫了二分查詢的遞迴演算法和非遞迴演算法。
二分查詢是用來從乙個有序陣列中查詢某乙個值是否存在,我們拿需要查詢的值和陣列的中間值不斷的比較,以公升序陣列為例,如果查詢的值大於陣列中間的值,則要查詢的值在中間值的右邊,如果查詢的值小於陣列中間值,那麼則在陣列的左邊進行查詢。
遞迴演算法實現二分查詢:
引數分別為 陣列 起始下標 末尾數字的下標 和要查詢的數, 這裡要注意只要我們每次起始值小於或者等於結束值,說明我們的陣列還沒有遍歷完,我們就繼續查詢。
public static int getkey(int a, int start, int end, int key) else if (a[mid] < key) else if (a[mid] > key)
} return -1;
}
非遞迴實現二分查詢:
public static int getkeybyfor(int a,int start,int end,int key)
else if(a[mid]key)
}return -1;
}
測試**:
public static void main(string args) ;
system.out.println(getkey(a, 0, a.length - 1, 3));
system.out.println(getkeybyfor(a, 0, a.length-1, 4));
}
二分查詢思想(使用遞迴和不適用遞迴的思想)
迴圈二分查詢,返回第一次出現該值的位置 param array 已排序的陣列 param findvalue 需要找的值 return 值在陣列中的位置,從0開始。找不到返回 1 public static int searchloop int array,int findvalue 起始位置 in...
二分查詢和遞迴的二分查詢
在乙個有序的陣列中查詢給定的資料項,把陣列衝中間分成兩半,然後看要查詢的資料項在陣列的哪一半,再次折半查詢。如下 public int find long searchkey else if lowerbound upperbound else private int recfind long se...
Python 二分查詢 涉及遞迴思想
二分查詢 搜尋 是一種在有序列表中查詢某一特定元素的搜尋演算法。首先先查找到目標列表的中間元素,如果中間元素正好是要查詢的元素,則返回查詢元素的索引下標,搜尋結束 如果要查詢的元素大於或者小於中間元素,則在列表大於或小於中間元素的那一半中查詢,並且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空...