折半查找/冒泡查找

中级软考(软件攻城狮)第3章知识点——数据结构与数据运算(查找+排序) 本文系统介绍了查找和排序两大核心算法。查找部分涵盖顺序查找(O(n))、二分查找(O(logn))和哈希查找(O(1)),重点分析各类方法的适用场景及优缺点。排序算法分为基础排序(直接插入、冒泡、简单选择)和高级排序(快速排序、堆排序、归并排序、基数排序),详细对比了时间复杂度、稳定性及空间复杂度特性,如快速排序平均最优但不稳定,归并排序稳定但需额外空间。最后总结了数据结构三要素(逻辑结构、存储结构、数据运算)及其应用选择策略,强调应根据业务需求在时间与空间效率间权衡。全文通过图示和表格直观呈现各类算法特性 阅读详情

一、折半查找

/**
 * Created with Intellij IDEA
 * ClassName:BinarySearch
 * User:MaLe
 * Description:给定一个有序整型数组, 实现二分查找
 * @Date:2021/10/16
 * @Time:15:51
 * @author:395645313@qq.com
 */
public class BinarySearch {
    public static int binarySearch(int[] arr,int n){
      int i=0;
      int j=arr.length-1;
      while (i<=j) {
          int mid=(i+j)/2;
          if (n < arr[mid]) {
              j=mid-1;
          } else if (n > arr[mid]) {
              i=mid+1;
          } else if (n == arr[mid]) {
              return mid;
          }
      }
      return -1;
    }

    public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6,7,8,9};
        int a=binarySearch(arr,9);
        System.out.println(a);
    }

}

二、冒泡排序

import java.util.Arrays;

/**
 * Created with Intellij IDEA
 * ClassName:Bubble
 * User:MaLe
 * Description:给定一个整型数组, 实现冒泡排序(升序排序)
 * @Date:2021/10/16
 * @Time:15:17
 * @author:395645313@qq.com
 */
public class Bubble {
    public static int[] bub(int[] arr){
        int a=0;
        for (int i = 0; i <arr.length-1 ; i++) {
            boolean flag=false;
            for (int j = 0; j <arr.length-1-i ; j++) {
                if (arr[j]>arr[j+1]){
                    a=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=a;
                    flag=true;
                }
            }
            if (flag=false){
                return arr;
        }
        }
        return arr;
    }
    public static void main(String[] args) {
        int[] arr={1,9,5,8,4,78};
        System.out.println("排序前:");
        System.out.println(Arrays.toString(arr));
        int[] c=bub(arr);
        System.out.println("排序后:");
        System.out.println(Arrays.toString(c));
    }
}

从零到一:基于K375S主控的机械键盘优联无线化改造实战 本文详细记录了基于罗技K375S主控进行机械键盘优联无线化改造的全过程。从改造动机、核心原理与物料准备,到电路设计、PCB打样、焊接调试,逐步拆解了将优联技术集成到自定义机械键盘中的实战步骤。项目最终实现了低延迟、高稳定性且支持多设备连接的优联无线机械键盘,为DIY爱好者提供了高性价比的改造方案。 阅读详情

相关推荐

固定资产报废的损失鉴定怎么做?

在社会生产的日常中,企业经常会遇到固定资产报废的损失鉴定,那么怎么去做鉴定?哪些情况下能申请固定资产报废损失鉴定呢? 今天,华碧鉴定就和大家说一说固定资产报废损失鉴定那些事儿。 符合下列条件之一的固定资产可申请报废: 1、使用年限过长,功能丧失,完全失去使用价值,或不能使用并无修复价值的; 2、产品技术落后,质量差,耗能高,效率低,已属淘汰且不适于继续使用,或技术指标已达不到使用要求的; 3、严重损坏,无法修复的或虽能修复,但累计修理费已接近或超过市场价值的; 4、主要附件损坏,无.

weixin_50362670的博客 2114

四种查找方法——冒泡、选择、查找、快速

四种基本排序方法的汇总

laoKdx的博客 1552

YOLOv5添加注意力机制的具体步骤

本文主要介绍了 本文在此篇博客的基础上向YOLOv5-5.0版 本文主要包括以下内容一、CBAM注意力机制添加(1)修改yolov5s主干网络(2)在common.py中添加可调用的CBAM模块(3)向yolo.py文件添加CBAMC3判断语句二、SE注意力机制添加 本文以yolov5s网络为例 一、CBAM注意力机制添加 注意力机制可以添加在backbone,Neck,Head等部分,接下来本文以backbone主干网络为例 (1)修改yolov5s主干网络 1.在yolov5-5.0工程文件夹下,找到m

thy0000的博客 2万+

Java进阶——数组中常见的算法

排序算法: 冒泡排序算法 选择排序算法 查找算法: 二分法查找 以上算法在以后的java实际开发中我们不需要使用的。 因为java已经封装好了,直接调用就行 只不过以后面试的时候,可能会有机会碰上 算法实际上在java中不需要精通,因为java中已经封装好了,要排序就调用方法就行。例如:java中提供了一个数组工具类: java.util.Arrays Arrays是一个工具类。其中有一个sort()方法,可以排序。静态方法,直接使用类名调用就行。 冒泡排序 参与比较的数据:9 8 10 7 6 0

LiLi的博客 353

李宏毅机器学习笔记第17周_概述领域自适应(Domain Adaptation)

Domain Adaptation

peaunt1的博客 1101

从2804云台电机到桌面机械臂:一个STM32/GD32玩家的FOC驱动踩坑全记录

本文详细记录了从2804云台电机到桌面机械臂的FOC驱动开发历程,涵盖了硬件选型、驱动方案优化、软件调试等关键环节。特别分享了L6234P驱动芯片的发热问题、AS5600编码器的I2C通信陷阱以及PID调参的实战经验,为DIY爱好者提供了宝贵的参考。

weixin_26897585的博客 474

常见基础算法

假设我们要查找的元素是81,如果是基本查找的话,只能从0索引开始一个一个往后找,但是如果元素比较多,你要查找的元素比较靠后的话,这样查找的此处就比较多。在学习二分查找之前,我们先来说一下基本查找,从基本查找的弊端,我们再引入二分查找,这样我们的学习也会更加丝滑一下。所以我们先分析选择排序算法的流程:选择排序的核心思路是,每一轮选定一个固定的元素,和其他的每一个元素进行比较;接下来,我们学习一种算法叫排序算法,它可以价格无序的整数,排列成从小到大的形式(升序),或者从大到小的形式(降序)

qq_46030254的博客 180

【Halcon 】Halcon 实战:如何为 XLD 模板添加极性信息以提升匹配精度?

本文介绍了Halcon中为XLD轮廓模板添加极性信息的实用技巧。通过先以"ignore_local_polarity"模式创建模板,首次匹配获得位置后,使用set_shape_model_metric运算符结合真实图像为模板注入极性信息(边缘明暗方向)。这种方法弥补了XLD模板初始不支持极性的缺陷,可显著提升后续匹配的精度和抗干扰能力。实验显示,添加极性信息后的模板匹配效果明显优于无极性的匹配结果。该技术特别适用于基于手动绘制或处理后的XLD轮廓创建模板的场景。

songhuangong123的博客 750

常见的冒泡排序、顺序查找和对半查找

关于一维数组的排序和查找冒泡排序改进的冒泡排序顺序查找对半查找 先看例题 从键盘上任意输入8个整数,用冒泡排序法对8个数排序(由小到大) 从键盘上输入整数,利用for循环输入 printf("输入要输入的整数个数:"); scanf("%d",&max); int i,a[max]; printf("输入数组元素:\n"); for(i=0;i<max;i++) { scanf("%d",&a[i]); } 冒泡排序 思路:升序 通过相邻之间的比较和交换,使值较小的数逐渐从底部

小飞的博客 1655

【日志】Prometheus/Loki+Alertmanager+Grafana监控告警

参考文章:匹配写法:https://blog.ossq.cn/2674.html。

CN_Eden 1320

【瑞芯微px30】【RTL8363】【一】驱动移植-网卡驱动概述

linux rtl8363驱动移植

weixin_34799243的博客 1179

Java学习——排序查找算法(冒泡排序、选择排序、二分法查找)

②若查找值小于中间元素,则从中间元素左边序列进行查找。若查找值大于中间元素,则从中间元素右边序列进行查找。这时,序列中的最大的元素应该放在最后面。②除第一个元素之外,找出剩下序列中最小的元素和第二个元素进行互换。①将两个相邻元素进行比较,若前一个元素大于后一个元素,则交换。③除最后一个元素外,其他的元素继续重复①②的操作。①找到序列中最小的元素和第一个元素进行互换。①找出一个序列的中间元素,看是否等于查找值。④重复,直至所有的元素排好为止。3)java代码实现。3)java代码实现。3)java代码实现。

zxmda的博客 418

CKA-CN考试之路----2

部分知道就可以了,考试不用输入,后面不再复述.这里我们需要将两端内容凭借成1个yaml。执行题目中给的的命令进行测试。

Q先生 241

选择冒泡排序/折半查找

计算机最初就是用来对数据进行操作的,为此,我们有必要掌握一些排序的算法,方便我们今后对数据进行排序操作,尽管java中提供了一些封装好的方法用来对数据进行排序,但是我们不能知其然而不知其所以然,有必要了解一下排序的原理。 一、选择排序 通过上边这张图我们可以清楚的了解到选择排序的流程。下面,附上代码实现: 二、冒泡排序        冒泡排序的特点是相邻的两个元素比较,如果符合比较

azhaohuiwei的专栏 810

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【排序及算法】冒泡/选择/插入/快速排序、顺序查找/折半查找算法

【算法】 算法是用来解决常见问题的方法 同一个问题可以采用多种方法解决,不同方法使用于不同的环境 【排序算法】 排序指的是把一组数字按照某个顺序排列好 排序算法分很多次重复执行,每次负责把一个数字放在合适的位置上 为了实现以上效果可以"先确定数字,然后查找位置,反之也可以" 通过不断的调整两个数字的相互顺序最终把合适的数字放在合适的位置上 1. 冒泡排序算法(必须掌

Hello, New World! 1454

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

算法 顺序查找/折半查找/冒泡排序/选择排序(待改)

1. 顺序查找 对数组没有任何要求 从数组的其实元素到末尾元素逐个进行判断,如果与查找到的数据相同,查找结束;如果全部数据都没有发现与查找值相同的元素,没有找到。 #include<iostream> using namespace std; int Search(int a[],int n,int key); const int N=5; int main() { int a[N]={3,1,2,5,4}; int key=2; int index=Search(a,N,ke

weixin_53043309的博客 231

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java之选择排序/冒泡排序/折半查找

import java.util.*; public class Dai { public static void main(String[] args) { // TODO Auto-generated method stub //选择排序 //每个元素都要比较 int[] a={3,2,4,9,0,999,7,22,45,100}; int n; /*for(int i=0;i&lt...

miss_dairongrong的博客 169

C语言---算法(选择排序/冒泡排序/折半查找/进制查表法)

算法 选择排序 #include <stdio.h> void selectSort(int nums[], int length); void swap(int nums[], int i, int j); void printArray(int nums[], int length); int main()

TheBlueNight的博客 797

2025/10/20 包装类 二分查找/折半查找 插值查找 斐波那契查找 分块查找 冒泡排序 选择排序 插入排序 快速排序 (递归算法) 常见算法的API(Arrays) Lambda表达式及其省略

在实际开发中,-128~127之间的数据用的比较多,如果每次使用都是new对象,那么太浪费内存了,所以,提前把这个范围内的每一个数据都创建好了对象,如果用到了不会创建新的,而是返回已经创建好了的对象。:每种数据在java中都有各自的数据类型,在计算的时候,如果不是同一种数据类型,是无法直接计算的。3、如果要查找的元素在mid的左边,缩小范围时,min不变,max等于mid减1。4、如果要查找的元素在mid的右边,缩小范围时,max不变,min等于mid加1。、插值查找、斐波那契查找、数表查找、哈希查找。

weixin_52342637的博客 283

C语言链表(创建、插入、删除、冒泡/插入排序、折半查找)实现学生信息管理系统

**前言** C基本都忘了,本来想找一个直接用的,但是多多少少都会有些问题,所以只能再自习回顾下,也参考了一些博客教程,最后完成图示功能。 **效果图** ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181205205228103.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,...

蛋叔 2267

c语言将折半查找一个数组,c语言作业(数组&折半查找法).doc

您所在位置:网站首页 > 海量文档&nbsp>&nbsp计算机&nbsp>&nbspC/C++资料c语言作业(数组&折半查找法).doc8页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档...

weixin_36325615的博客 877

C语言-所有排序实现

头文件Insert.h #include<stdio.h> void Swap(int *a, int *b); void StraightInsert(int *a, int n); 测试文件Main.c #include<stdio.h> #include"Insert.h" int main() { //1.直接插入排序(从小到大) int L[8] = { 49,38,65,97,76,13,27,49 }; int n = 8; Stra.

weixin_45651738的博客 1057

必学排序与查找算法:6个核心知识点梳理(附特性+实操要点)

掌握算法特性后,精准选型能大幅提升程序效率,结合实际场景总结如下:小规模数据(n<10):优先插入排序(稳定)、选择排序(简单);中等规模数据:希尔排序(无额外空间)、快速排序(效率高);大规模数据:快速排序(首选),需稳定排序则选归并排序(补充:虽未梳理,但与快速排序复杂度一致,稳定);有序数据查找:折半查找(O(logn)),无序数据查找:线性查找(简单)。排序与查找算法的核心是理解“逻辑本质”,而非死记硬背代码。实际应用中,需结合数据规模、稳定性需求、空间限制综合选型,灵活调整算法细节。

2401_85893688的博客 600

模板使用

1.模板在函数中使用: 此冒泡排序限定了只能用int,需要排不同类型写多次吗?函数重载,模板。 //基本冒泡排序模板 template &lt;class SORT&gt; //void sort(int* arr,int length) void sort(SORT arr,int length) { for(int i=0;i&lt;length-1;i++) { for(int...

Poseidon's Maserati 179

Java中的设计模式和算法

今天内容: (1)常用的设计原则 (2)常用的设计模式 (3)常用的查找算法 (4)常用的排序算法 1.常用的设计原则(记住) 1.1 软件开发的流程 需求分析文档 => 概要设计文档 => 详细设计文档 => 编码和测试 => 安装和调试 => 维护和升级 1.2 常用的设计原则 开闭原则 - 对扩展开放,对修改关闭。 - 提高了代码的扩展性和维护性。(封装后尽量不要改) 如: public class Person { private String name; priva

Recently祝祝的博客 1025

【数据结构】时间复杂度与空间复杂度

【数据结构】时间复杂度与空间复杂度,常见算法如:冒泡排序,折半查找,递归算法等时间复杂度与空间复杂度。

Miraitowax 873
上一篇: 递归+数组
下一篇: JAVA类和对象
夏日午后的旋律
博客等级 码龄5年 29粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值