关于二分法查找。
问题:我的代码在执行时会死循环。请问,我该怎么怎么改?
二分法算法,怎么样避免死循环。
- public class BinarySearch {
- public static void main(String[] args){
- /*
- * 1.原始数,无序的
- * 2.调用二分查找方法,返馈:没有找到。
- * 3.
- */
- int[] data = {12,23,34,56,21,32,45,67,12,45,23,21,4,3,6,9};
- int key =13;
- boolean result = binarySearch(key,data);
- System.out.print(result);
- }
- private static boolean binarySearch(int key, int[] data) {
- //
- //需要对data[]进行排序。调用排序方法。返回排序结果
-
- int[] date = sort(data);
- int left=0;
- int right=date.length-1;
- int middle;
- while(left<=right){
- middle = (left+right+1)/2;
- if(date[middle]==key) return true;
- else if(key<date[middle]) right = middle+1;
- else if(key>date[middle]) left = middle-1;
- }
- return false;
- }
- private static int[] sort(int[] data) {
- // 顺序排序
-
- for(int i=0; i<data.length; i++){
- for(int j=0; j<data.length; j++){
- if(data[i]<data[j]){
- int temp = data[i];
- data[i] = data[j];
- data[j] = temp;
- }
-
- }
- }
- return data;
-
- }
- }
复制代码 |
|