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

Java二分查找+冒泡排序

二分查找在编程中是用来查找目标元素在有序数组中的位置,并返回目标元素的索引

先给定一个有序数组,在创建一个方法来进行二分

主要思想是:根据数组具有下标的特点来分别计算,最左边的索引,以及最右边的索引,在判断目标元素与中间元素的大小,如果目标元素小于中间元素,我们可以判断出,目标元素在中间元素的左边,我们此时更新左右索引,在计算出新的中间元素,在次进行判断,如果目标元素不在数组中就会出现left>right的情况,退出循环,并返回-1.

public class Test_11_22 {public static void main(String[] args) {//二分查找//创建一个有序数组int [] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};//查找元素int index = binarySearch(arr, 19);System.out.println(index);}public static int binarySearch(int[] arr, int key) {//左边的索引int left = 0;//右边的索引int right = arr.length-1;while(left <= right){//计算中间索引int mid = (left + right)/2;if(arr[mid]<key){//如果key大于中间元素,则搜索右半部分left = mid+1;}else if(arr[mid]>key){//如果key小于中间元素,则搜索左半部分right = mid-1;}else{//如果找到了,则返回索引return mid;}}//如果没有找到,则返回-1return -1;}
}

2.冒泡排序(这里以升序为例讲解)

冒泡排序是把一个无序的数组按照 升序 或者降序 来进行排序 主要的思想是"双指针",通过比较前后元素的大小,如果满足判断条件就会交换元素的位置,第一次排序就会把最大的元素放在最后面,通过这样的方法在进行判断,一直到完成为止,

import java.util.Arrays;public class Test_11_22_2 {public static void main(String[] args) {int[] arr = {5, 3, 8, 6, 2, 7, 1, 9, 4};//调用bubbleSort方法bubbleSort(arr);System.out.println(Arrays.toString(arr));}//冒泡排序public static void bubbleSort(int[] arr) {//在这个方法对数组的变动会影响到原数组,所以不需要返回值,在结果上直接打印就行了//在这里的循环次数是arr.length-1,因为最后一次冒泡排序是不需要的//因为每一次冒泡排序都会将最大的元素放到最后,所以不需要再进行一次冒泡排序for(int i = 0;i<arr.length;i++){for(int j = 0;j<arr.length-i-1;j++){if(arr[j]>arr[j+1]){//满足条件就交换前后两个元素的位置int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}}
}

http://www.lryc.cn/news/491467.html

相关文章:

  • (三)手势识别——动作识别应用【代码+数据集+python环境(免安装)+GUI系统】
  • 大数据实战——MapReduce案例实践
  • OpenCV基础(3)
  • 大语言模型---RewardBench 介绍;RewardBench 的主要功能;适用场景
  • 泷羽sec-linux
  • 栈、队列、链表
  • 【maven】配置下载私有仓库的快照版本
  • LabVIEW引用类型转换问题
  • GUI智能代理:用AI代理玩米哈游游戏《崩坏》
  • 系统思考—环路图的好处
  • torch.set_printoptions
  • Nexus搭建go私有仓库,加速下载go依赖包
  • Qt6 Android设置文件读写权限设置
  • TCP快速重传机制为啥出现重复ACK?
  • SSM--SpringMVC复习(二)
  • C语言蓝桥杯组题目
  • 【解决】Unity TMPro字体中文显示错误/不全问题
  • 【Threejs进阶教程-着色器篇】9.顶点着色器入门
  • 质量留住用户:如何通过测试自动化提供更高质量的用户体验
  • 【CSP CCF记录】201803-1第13次认证 跳一跳
  • 详解Qt 中使用虚拟键盘(软键盘qtvirtualkeyboard)
  • cocoscreater3.8.4生成图集并使用
  • IDEA如何快速地重写方法,如equals、toString等
  • 网络安全——SpringBoot配置文件明文加密
  • LightRAG开源了…结合本地ollama实现股票数据接口Akshare智能问答
  • 【PCB设计】AD16教程:分配位号
  • ElasticSearch7.x入门教程之索引概念和基础操作(三)
  • Python后端flask框架接收zip压缩包方法
  • 机器学习中数据集Upsampling和Downsampling是什么意思?中英文介绍
  • 浏览器控制台中使用ajax下载文件(没有postman等情况下)