常见算法&Lambda表达式

发布于:2023-01-12 ⋅ 阅读:(430) ⋅ 点赞:(0)

目录

一、常见算法

1、冒泡排序

1)、冒泡排序的思想

2)、实现冒泡排序的关键步骤

2、选择排序

1)、选择排序的思想

2)、实现选择排序的关键步骤

3、二分查找

1)、数组的二分查找的实现步骤

2)、代码演示

3)、结果展示 

二、Lambda表达式

1、Lambda概述

1)、Lambda概述及其作用

2)、Lambda表达式的简化格式

3)、什么是函数式接口?

2、Lambda实战-简化常见函数式接口

1)、Lambda表达式简化Comparator接口的匿名形式

2)、Lambda表达式简化按钮监听器ActionListener的匿名内部类形式

3、Lambda表达式的省略规则

1)、省略规则


一、常见算法

1、冒泡排序

1)、冒泡排序的思想

每次从数组中找出最大值放在数组的后面去。

2)、实现冒泡排序的关键步骤

确定总共需要做几轮: 数组的长度-1.

每轮比较几次:

 当前位置大于后一个位置则交换数据

 

2、选择排序

1)、选择排序的思想

每轮选择当前位置,开始找出后面的较小值与该位置交换。

2)、实现选择排序的关键步骤

确定总共需要选择几轮: 数组的长度-1。

控制每轮从以前位置为基准,与后面元素选择几次。

 

3、二分查找

1)、数组的二分查找的实现步骤

定义变量记录左边和右边位置。

使用while循环控制查询(条件是左边位置<=右边位置)

循环内部获取中间元素索引

判断当前要找的元素如果大于中间元素,左边位置=中间索引+1

判断当前要找的元素如果小于中间元素,右边位置=中间索引-1

判断当前要找的元素如果等于中间元素,返回当前中间元素索引。

2)、代码演示

public class Test2 {
    public static void main(String[] args) {
    int[] arr = {5,6,7,8,9,12,15,45,89};
    int index = binarySeach(arr,12);
    System.out.println(index);
    }

    /**
     * 二分查找
     * @param arr   给定一个排好顺序的整型数组
     * @param date  查找数
     * @return      如果查不到,返回-1
     */
    public static int binarySeach(int[] arr,int date){
        //1、定义左边位置索引和右边位置索引
        int left = 0;
        int right = arr.length - 1;

        //2、给定一个循环查找
        while (left <= right){
            //3、判断,算出中间索引
            int middle =(left + right)/2;
            if(date > arr[middle]){
                //往右边找,左边位置索引更新为 = 中间索引 + 1
                left = middle + 1;
            }else if (date < arr[middle]){
                //往左边找,右边位置索引更新为 = 中间索引 - 1
                right = middle - 1;
            }else {
                return middle;
            }
        }
        return -1;  //查无此元素
    }
}

3)、结果展示 

 

二、Lambda表达式

1、Lambda概述

1)、Lambda概述及其作用

Lambda表达式是JDK 8开始后的一种新语法形式。  

作用:简化匿名内部类的代码写法。

2)、Lambda表达式的简化格式

 注意:Lambda表达式只能简化函数式接口的匿名内部类的写法形式

3)、什么是函数式接口?

首先必须是接口、其次接口中有且仅有一个抽象方法的形式。

2、Lambda实战-简化常见函数式接口

1)、Lambda表达式简化Comparator接口的匿名形式

 注意:通常我们见到的函数式接口上都有一个@FunctionalInterface注解,标记该接口必须是满足函数式接口。

2)、Lambda表达式简化按钮监听器ActionListener的匿名内部类形式

 

3、Lambda表达式的省略规则

1)、省略规则

参数类型可以省略不写。

如果只有一个参数,参数类型可以省略,同时()也可以省略。

如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号!

如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不

写,同时也必须省略";"不写


网站公告

今日签到

点亮在社区的每一天
去签到