Java中常用的查找方法——顺序查找和二分查找.docxVIP

  • 6
  • 0
  • 约2.38千字
  • 约 12页
  • 2020-03-09 发布于江西
  • 举报

Java中常用的查找方法——顺序查找和二分查找.docx

神话丿小王子的百度文库 Java 中常用的查找算法——顺序查找和二分查找 1、顺序查找: a)  原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找, 找不到便一直查找下去,直到数据最后一位。 b)  图例说明:  原始数据:int[] a={4,6,2,8,1,9,0,3};  要查找数字:8 代码演示: import java.util.Scanner; /* * 顺序查找 */ public class SequelSearch { public static void main(String[] arg) { int[] a={4,6,2,8,1,9,0,3}; Scanner input=new Scanner(System.in); System.out.println(请输入你要查找的数:); //存放控制台输入的语句 int num=input.nextInt(); 程序虐我千百遍,我待程序如初恋 神话丿小王子的百度文库 //调用 searc()方法,将返回值保存在 result 中 int result=search(a, num); if(result==-1){ System.out.println(你输入的数不存在与数组中。); } else System.out.println(你输入的数字存在,在数组中的位置是第: +(result+1)+个); } public static int search(int[] a, int num) { for(int i = 0; i a.length; i++) { if(a[i] == num){//如果数据存在 return i;//返回数据所在的下标,也就是位置 } } return -1;//不存在的话返回-1 } } 运行截图: 程序虐我千百遍,我待程序如初恋 神话丿小王子的百度文库 2、二分查找  前提条件:已排序的数组中查找 二分查找的基本思想是:首先确定该查找区间的中间点位置:  int mid = c) (low+upper) / 2;然后将待查找的值与中间点位置的值比较:若相等,则查找成功 并返回此位置。若中间点位置值大于待查值,则新的查找区间是中间点位置的左 边区域。若中间点位置值小于待查值,则新的查找区间是中间点位置的右边区域。 下一次查找是针对新的查找区间进行的。 图例说明: 原始数据:  int[] a={5,3,6,1,9,8,2,4,7};  查找是否存在数字 8; 第一步,先用之前学过的排序方法将数组按升序排序:int[] a={1,2,3,4,5,6,7,8,9}; 第二步,取中间数:5 跟 8 比较,8 大于 5 {6,7,8,9}  ,取中间数右侧的数组进行比较,即 d)  第三步:重复第一步和第二步,直到找到数据或者比较完所有数据。 代码示例: import java.util.Scanner; /* * 二分查找 */ public class BinarySearch { public static void main(String[] args) { int[] arr={5,3,6,1,9,8,2,4,7}; //先打印输出原始数组数据 System.out.println(原始数组数据如下:); for (int n : arr) { System.out.print(n+ ); } 程序虐我千百遍,我待程序如初恋 神话丿小王子的百度文库 System.out.println(); //首先对数组进行排序,这里用冒泡排序 for(int i=0;iarr.length-1;i++){ for(int j=0;jarr.length-1-i;j++){ if(arr[j]arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } //遍历输出排序好的数组 System.out.println(经过冒泡排序后的数组:); for(int n:arr){ System.out.print(n+ ); } System.out.println();//换行 Scanner input=new Scanner(System.in); System.out.println(请输入你要查找的数:); int num=input.nextInt(); int result=binarySearch(arr, num); if(result==-1){ System.out.println(你要查找的数不存在……); } 程序虐我千百遍,我待程序如初恋 神话丿小王子的百度文库 else{ System.out.

文档评论(0)

1亿VIP精品文档

相关文档