当前位置: 首页 > news >正文

比较好的政府网站永久免费wap自助建站

比较好的政府网站,永久免费wap自助建站,青岛做网站的,自学建立网站文章目录 前言任务描述编程要求 输出样例:未查找到11元素! 二、代码实现总结理解不了考试的时候直接背下来就好了。 前言 [TOC]二分搜索 任务描述 折半查找(二分搜索) 设a[low..high]是当前的查找区间,首先确定该区间的中点位置…

文章目录

  • 前言
      • 任务描述
      • 编程要求
    • 输出样例:未查找到11元素!
  • 二、代码实现
  • 总结
    • 理解不了考试的时候直接背下来就好了。


前言

[TOC]二分搜索

任务描述

折半查找(二分搜索)
a[low..high]是当前的查找区间,首先确定该区间的中点位置mid=(low+high)/2;然后将待查的k值与a[mid].key比较:
(1)若k==a[mid],则查找成功并返回该元素的物理下标;
(2)若k<a[mid],则由表的有序性可知a[mid..high]均大于k,因此若表中存在关键字等于k的元素,则该元素必定位于左子表a[low..mid-1]中,故新的查找区间是左子表a[low..mid-1]
(3)若k>a[mid],则要查找的k必在位于右子表a[mid+1..high]中,即新的查找区间是右子表a[mid+1..high]。
  下一次查找是针对新的查找区间进行的。

本关任务:编写一个进行二分搜索的小程序。

编程要求

根据提示,在右侧编辑器补充代码,能够实现二分搜索。

测试说明
输入样例:

10
1 2 3 4 5 6 7 8 9 10
6

(其中第一行的10:表示数组中元素的个数
第二行的1…10是输入的数组中的元素
第三行的6 是表示查找元素6)

输出样例:
6是数组中的第6个元素

输入样例:

10
1 2 3 4 5 6 7 8 9 10
11

(其中第一行的10:表示数组中元素的个数
第二行的1…10是输入的数组中的元素
第三行的11 是表示查找元素11)

输出样例:未查找到11元素!

二、代码实现

import java.util.Scanner;/**1. @author 海宁不掉头发*/
public class BinSearch {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();//数组中元素的个数int[] arr = new int[n];for (int i = 0; i < n; i++) {arr[i] = scanner.nextInt();//输入数组中的元素}//查找的元素int target = scanner.nextInt(); // 需要查找的元素是多少scanner.close();int index = binarySearch(arr, target); // 定义一个二分查找的方法,对数组和穿进去的要查找那个元素进行操作//进行二分查找if (index != -1) {System.out.println(target + "是数组中的第" + (index + 1) + "个元素");//输出查找结果} else {System.out.println("未查找到" + target + "元素!");//输出未查找的结果}}public static int binarySearch(int[] arr, int target) {int low = 0;  // 初始位是0int high = arr.length - 1; //  最高位是数组中的最后一位while (low <= high) { // 循环一个元素,是否最小位的小于最大位int mid = (low + high) / 2; // 找到数组中在中间位置的下标//计算中点的位置if (arr[mid] == target) {  // 如果要查找数字的位置就是数组中间的元素return mid;//直接返回这个数字} else if (arr[mid] > target) { // 否则如果是 要查找的这个元素小于数组最中间的元素,那么肯定是在左边这一半了high = mid - 1;  // 中间数组的下标-1再赋给最高位 如此反复循环} else {low = mid + 1; // 否则就是在右边那一半,反复循环直到找到输入最初的那个数字的位置为止。}}return -1; //这里返回-1 的意思输入报错,所有条件均不满足,逻辑错误。当查找区间为空(即low > high)时,说明目标值不存在于数组中,返回 -1。}
}

总结

二分查找是一种高效的查找算法,适用于已排序的数组。其基本思想是将查找区间不断缩小一半,通过比较目标值与区间中间元素的大小关系来确定下一步查找的区间,重复这个过程直到找到目标值或者确定目标值不存在。

  1. 深了对算法效率的认识:通过对比二分查找和顺序查找的时间复杂度,深刻体会到选择合适算法的重要性。在处理大规模数据时,高效的算法可以大大节省时间和资源。
  2. 培养了逻辑思维能力:实现二分查找需要仔细考虑边界条件、循环条件和中间值的计算等问题,这锻炼了逻辑思维的严密性和准确性。
  3. 理解了分治思想的应用:二分查找是分治思想的一种体现,将问题不断分解为更小的子问题,通过逐步缩小查找区间来解决问题。这种思想在其他算法和问题解决中也有广泛的应用。
  4. 认识到数据结构和算法的重要性:良好的数据结构和高效的算法是编写高质量程序的基础。学习和掌握各种算法可以提高编程能力和解决问题的效率。

总之,学习用 Java 代码实现二分查找是一次很有价值的学习经历,不仅掌握了一种实用的查找算法,还提高了对数据结构和算法的理解和应用能力。

二分查找的关键核心代码:

public class BinarySearch {public static int binarySearch(int[] arr, int target) {int low = 0;int high = arr.length - 1;while (low <= high) {int mid = low + (high - low) / 2;if (arr[mid] == target) {return mid;} else if (arr[mid] < target) {low = mid + 1;} else {high = mid - 1;}}return -1;}
}

理解不了考试的时候直接背下来就好了。


http://www.hkea.cn/news/847043/

相关文章:

  • 郑州公司做网站汉狮中囯联通腾迅
  • 专业网上购物平台优化网站的步骤
  • 用web开发一个网站怎么做网站推广优化平台
  • 建设企业网站进去无法显示搜索引擎seo
  • 网站 分辨率百度视频推广
  • 中国红河网seo排名工具
  • 做网站商丘3a汽车集团公司网络营销方案
  • 网络宣传推广策划范文seo如何优化排名
  • 网站 建设 原则新闻今天的最新新闻
  • 服装网站首页设计主要推广手段免费
  • 网站建设公司做销售好不好?seo搜索引擎优化实训总结
  • 江西威乐建设集团有限公司企业网站长春关键词优化公司
  • 深圳网站建设lxhd英文关键词seo
  • 在线购物商城网站百度移动端排名软件
  • 太原网站的公司友情链接的英文
  • 网站是用什么做的吗百度q3财报2022
  • 深圳福田网站建设公司如何做谷歌seo推广
  • 西安有做网站的吗北京网站设计公司
  • 哪家专门做特卖网站平台连接
  • 衢州网站推广最近发生的重大新闻
  • 网页设计的网站配色方案seo基础培训机构
  • 维护网站是什么工作淄博网站制作
  • 做电影下载网站成本淘宝关键词排名
  • 企业h5网站建设百度推广电话是多少
  • 中国保密在线网站培训系统软文怎么做
  • 山西住房城乡建设部网站整合网络营销是什么
  • 做美图网站有哪些东西吗个人博客seo
  • 南昌专业做网站公司竞价托管怎么做
  • 网站产品展示怎么做微信小程序建站
  • dw做网站的流程客户引流的最快方法是什么