简单认识算法

3 篇文章 0 订阅

什么是算法?

解决某个实际问题的过程和方法。

 排序算法 

1.冒泡排序

打印结果:

2.选择排序

 打印结果:

优化选择排序:因为每一轮都需要以当前位置为基准与后面元素比较,太过繁琐,所以可以找到后面元素中较小值的索引,直接将找到的比当前小的最小值的索引拿出来,与当前索引的值调换位置即可。代码如下:

查找算法

二分查找

最好通过一个方法来完成!



public class Test3 {
    public static void main(String[] args) {
        //1.准备好一个数组
        int[] arr = {7, 23, 79, 81, 103, 127, 131, 147};

        System.out.println(binarySearch(arr, 81));

    }

    public static int binarySearch(int[] arr, int data) {
        //1.定义两个变量一个在最左边位置,一个在最右边位置
        int left = 0;
        int right = arr.length - 1;

        //2.定义一个循环控制折半
        while (left <= right) {
            //3.每次折半,都算出中间位置处的索引
            int middle = (left + right) / 2;
            //4.判断当前要找的元素值,与中间位置处的元素值的大小情况
            if (data < arr[middle]) {
                //往左边找,截至位置(右边) = 中间位置 - 1
                right = middle - 1;
            } else if (data > arr[middle]) {
                //往右边找,起始位置(左边) = 中间位置 + 1
                left = middle + 1;
            } else {
                return middle;
            }
        }
        return -1;//-1特殊结果,代表没有找到数据!数据不存在该数组!
    }
}

输出结果:3

Arrays类提供的Arrays.binarySeareh()方法

底层原理:

  • 13
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值