Java学习笔记_Day15

二分查找

前提条件:数组中的数据必须是有序的

核心逻辑:每次排除一半的查找范围

java 复制代码
public static int binarySearch(int[] arr,int number){
        int min=0;
        int max=arr.length-1;
        while(true){
            if(min>max){
                return -1;
            }
            int mid=(min+max)/2;
            if(arr[mid]>number){
                max=mid-1;
            }
            else if(arr[mid]<number){
                min=mid+1;
            }
            else{
                return mid;
            }

}

冒泡排序

冒泡排序:相邻的数据两两比较,小的放前面,大的放后面

java 复制代码
public static void BubbleSort(int[] arr){
for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }

}

外循环:表示要执行多少轮,n个数据,执行n-1轮

内循环:每一轮中找到最大值,-1防止索引越界

选择排序

选择排序:从0索引开始,拿着每一个索引上的元素和后面的元素依次比较,小的放前面。

java 复制代码
public static void SelectSort(int[] arr) {
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = i+1; j < arr.length; j++) {
                if(arr[i] > arr[j]) {
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }

插入排序

插入排序:将0索引的元素看做是有序的,把N+1索引的元素到最后一个当成是无序的。

遍历无序的数据,将遍历的元素插入有序序列适当的位置

java 复制代码
public static void insertSort(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            for (int j = i-1; j >=0&&arr[j]> arr[j+1]; j--) {
               
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                
            }

        }
    }
相关推荐
网络工程小王几秒前
【LangGraph 状态持久化(Checkpoint)详解】学习笔记
jvm·人工智能·笔记·langchain
NNYSJYKJ几秒前
K12 学习常见问题破解:脑能思维链的算法与教育应用
学习·算法
要开心吖ZSH几秒前
零基础入门 Spring WebFlux 与 Project Reactor:从小白到顿悟
java·响应式编程·spring webflux
智塑未来1 分钟前
装备制造行业设计制造一体化痛点攻克与实战经验总结
java·开发语言·制造
Shadow(⊙o⊙)5 分钟前
硬核手搓解析!进程-内核分析:命令行参数及环境变量,重构main()
linux·运维·服务器·开发语言·c++·后端·学习
星夜夏空995 分钟前
STM32单片机学习(11)——GPIO输入实验
stm32·单片机·学习
问心无愧05135 分钟前
ctf show web入门81
前端·笔记
Devin~Y6 分钟前
电商AIGC智能客服面试:JVM调优、Spring Cloud微服务、Redis缓存、Kafka消息、K8s观测与RAG落地
java·jvm·spring boot·redis·spring cloud·kafka·kubernetes
Ai马猴子9 分钟前
企业定制专属模型,gpt-5.4-cdx高效适配,DMXAPI 安全合规
java·gpt·安全
开开心心就好10 分钟前
支持添加网址的资源快速打开工具
人工智能·学习·游戏·音视频·hbase·语音识别·storm