简单二分查找

xiaoxiao2021-02-28  128

package demo.sufa; import java.util.Arrays; /**  * @author  ckl * @date 创建时间:2017年6月28日 下午3:03:54  * @version 1.0 * @parameter   * @since   * @return   */ public class erfengchazhao { public static void main(String[] args) { int[] arr = {234,245,77,3,543,67,78,95,378,678,205,753,457,2903,340}; int searchWord = 6780; //所要查找的数字 // int searchCount = 0; //循环的次数 System.out.printf("普通循环查找%d的次数是%d",searchWord,genetalLoop(arr,searchWord)); System.out.printf("二分法查找%d的次数是%d",searchWord,binarySearch(arr,searchWord)); } static int genetalLoop(int[] arr,int searchWord) { int searchCount = 0; for(int i=0;i<arr.length;i++){ searchCount++; if(searchWord==arr[i]){ break; } if(i==arr.length-1){ System.out.println("找不到"); } } return searchCount; }   static int binarySearch(int[] arr,int searchWord){ Arrays.sort(arr); System.out.println("\n"+Arrays.toString(arr)); //二分查找 int iIndex = 0; int iStart = 0; int iEnd = arr.length-1; int searchCount = 0; for(int i = 0;i<=arr.length/2;i++){ if(i==arr.length/2){ System.out.println("找不到"); break; } searchCount++; iIndex = (iStart+iEnd)/2; if(arr[iIndex]<searchWord){ System.out.println(arr[iIndex]); iStart = iIndex; }else if(arr[iIndex]>searchWord) { System.out.println(arr[iIndex]); iEnd = iIndex; }else if(arr[iIndex]==searchWord){ System.out.println("找到了"); System.out.println(arr[iIndex]); break; } } return searchCount; }   }
转载请注明原文地址: https://www.6miu.com/read-38431.html

最新回复(0)