Java入门7——一维数组练习题

1.二分查找

【eg】假设给定一个排好顺序的数组array,然后要输入你要查找的数字,这个时候你要用二分查找的思想实现这个功能

思路:就是让数组的中间数和要查找的数字作比较,然后一左一右作为查找的范围,然后根据大小调整左边界作为中间数还是右边的数字作为边界,这里给大家一个例子,作为参考~

java 复制代码
public class javaSchool {
    public static void main(String[] args) {
        //二分查找
        int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
        System.out.println("请输入你要查找的数字");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int mid = -1;//中间数字
        int left = 0;//左边界
        int right = array.length-1;//右边界
        while(left <= right) {
            mid = (left + right) / 2;
            if(n > array[mid]){
                left = mid + 1;
            }else if(n < array[mid]){
                right = mid - 1;
            }else{
                break;
            }
        }
        if(n == array[mid])
            System.out.println("找到了。下标为:"+mid);
        else
            System.out.println("没有找到此数字");
    }
}

看着咱们实现二分查找的功能是不是很复杂,其实!在Java中,已经给定好了一个函数功能专门用来查找,就是 : Arrays.binarySearch(数组,查找的数字),让我们用代码实现一下~

java 复制代码
public class javaSchool {
    public static void main(String[] args) {
        //二分查找
        int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
        System.out.println("请输入你要查找的数字");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int target = Arrays.binarySearch(array, n);
        System.out.println("找到了,下标为:" + target);
    }
}

这两个结果是一样的,但是Java自带功能就是香~

但是这个排序数组,也可以传三个参数:

Arrays.binarySearch(开始找的位置,结束找的位置,查找的数字);

总之,就非常方便~

2.冒泡排序

【eg】有一个给定数组arr,现在要用冒泡排序的方式,按照从小到大排序

思路:其基本思想是通过重复遍历待排序的数列,比较两个元素,如果它们的顺序错误就把它们交换过来。这个过程会重复进行,直到没有再需要交换的元素,即该数列已经排序完成。‌【这里用百度搜了一下】,下面是我的代码,供大家参考

java 复制代码
public class javaSchool {
    public static void main(String[] args) {
        //冒泡排序
        int[] arr = new int[]{1,3,6,2,5,4,7,9,8,10};
        System.out.println("排序前");
        System.out.println(Arrays.toString(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;
                }
            }
        }
        System.out.println("排序后");
        System.out.println(Arrays.toString(arr));
    }
}

这样我们就实现了这个功能,但是!Java也给出了一个函数功能用来排序~那就是sort()函数,那么具体怎么用呢,大家可以参考我的代码~

java 复制代码
public class javaSchool {
    public static void main(String[] args) {
        int[] arr = new int[]{1,3,6,2,5,4,7,9,8,10};
        System.out.println("排序前");
        System.out.println(Arrays.toString(arr));
        Arrays.sort(arr);
        System.out.println("排序后");
        System.out.println(Arrays.toString(arr));
    }
}

是不是极其简单!所以说Java真的很方便~

3.数组拷贝

这里就是单纯给大家展示一下Java功能有多好用~

java 复制代码
public class javaSchool {
    public static void main(String[] args) {
        int[] arr1 = new int[]{1,2,3,4,5,6,7,8,9,10};

        //拷贝数组1所有元素
        int[] arr2 = Arrays.copyOf(arr1,arr1.length);
        System.out.println(Arrays.toString(arr2));

        //拷贝数组1中3~7位置的元素
        int[] arr3 = Arrays.copyOfRange(arr2,3,7);
        System.out.println(Arrays.toString(arr3));
    }
}

是不是及其方便简单呢~


今天内容就到这里啦,大家可以多做练习~

相关推荐
洛水水6 小时前
【力扣100题】18.随机链表的复制
算法·leetcode·链表
南宫萧幕6 小时前
规则基 EMS 仿真实战:SOC 区间划分与 Simulink 闭环建模全解
算法·matlab·控制
多加点辣也没关系6 小时前
数据结构与算法|第二十三章:高级数据结构
数据结构·算法
庞轩px7 小时前
第七篇:Spring扩展点——如何优雅地介入Bean的创建流程
java·后端·spring·bean·aware·扩展点
代钦塔拉7 小时前
Qt4 vs Qt5 带参数信号槽的连接方式详解
开发语言·数据库·qt
tongluowan0078 小时前
一个请求在Spring MVC 中是怎么流转的
java·spring·mvc
hoiii1878 小时前
孤立森林 (Isolation Forest) 快速异常检测系统
算法
夜郎king9 小时前
Spring AI 对接大模型开发易错点总结与实战解决办法
java·人工智能·spring
InfinteJustice9 小时前
踩坑分享C 语言文件操作全攻略:从基础读写到随机访问与缓冲区原理
c语言·开发语言·microsoft
码云数智-大飞9 小时前
滥用Lombok的@EqualsAndHashCode导致线上事故复盘
开发语言