javase笔记 基础代码

数组反转

    public static void change(int min,int max,int[] arr) {
	  //使用递归达到数组反转
        if(min >= max){
            return;
        }
        int b;
        b=arr[min];
        arr[min]=arr[max];
        arr[max]=b;
        min++;
        max--;

        change(min,max,arr);
    }

冒泡排序

        //冒泡排序
        //外层循环是比较的次数,内层循环是比较
        for (int a = 0; a < arr.length-1; a++) {
            for (int i2 = 0; i2 < arr.length-a-1; i2++) {
                if(arr[i2]>arr[i2+1]){
                    int tem = arr[i2+1];
                    arr[i2+1]=arr[i2];
                    arr[i2]=tem;
                }
            }
        }

二分查找

package com.atguigu.d_array;

public class Demo04Binary {
    //二分法查找
    //前提要确保数组是有序的
    public static void main(String[] args) {
        int[]arr = {1,2,3,4,5,6,7,8,};
        int result = binary(3,arr);
        System.out.println("result = " + result);


    }

    public static int binary(int a,int[] arr) {
        //定义三个变量
        int min = 0;
        int max = arr.length - 1;
        int mid = 0;
        while(min<=max){
            mid = (min + max) / 2;
            if(a<arr[mid]){
                max=mid-1;
            }else if(a>arr[mid]){
                min = mid+1;
            }else {
                return mid;
            }
        }
        return -1;

    }
}

Java后端学习路线 文章被收录于专栏

Java基础 MySQL

全部评论

相关推荐

在Express.js中,默认情况下是单线程运行的,并且使用事件循环来处理并发请求。下面是关于多线程和事件循环的解释:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&amp;uuid=1730841bd8554b2fa6de4161e81ebb45多线程:多线程是指在一个应用程序中同时运行多个线程,每个线程执行不同的任务。每个线程都有自己的执行上下文和栈。多线程编程可以提高并发性能,因为多个线程可以同时执行不同的任务,从而提高整体的效率。在多线程模型中,每个线程都可以独立处理来自客户端的请求,但也需要处理线程间的同步和资源共享问题。事件循环:事件循环是一种用于处理并发请求的编程模型。在事件循环模型中,应用程序通过一个事件循环监视和处理来自客户端的请求。当有请求到达时,事件循环将其放入一个任务队列中,并按照顺序逐个处理这些任务。事件循环的核心思想是单线程下的非阻塞I/O操作,即避免线程切换和同步开销。在事件循环模型中,一个任务的处理不会阻塞其他任务的执行,因此可以提供较高的并发性能。在Express.js中,通过事件驱动的方式处理请求,借助Node.js的事件循环机制来管理请求和响应。当有新的请求到达时,Express.js会将其包装为事件,然后使用事件循环来处理这些事件。通过这种方式,只需要一个线程来处理所有的请求,并且可以高效地处理并发请求。需要注意的是,虽然Express.js本身是单线程的,但在Node.js中,底层的I/O操作是通过libuv库来完成的,libuv可以利用多个线程来执行I/O操作,从而提高效率。因此,尽管主要的处理请求的线程是单线程的,但底层的I/O操作是可以并行执行的。总结起来,Express.js利用事件循环的机制来高效处理并发请求,通过单线程而不是多线程来提供高性能和高并发支持。这种模型通过避免线程切换和同步开销来提供非阻塞的I/O操作,从而实现了高效的并发处理。
2025-05-05
在牛客打卡307天,今天也很努力鸭!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务