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));
    }
}

是不是及其方便简单呢~


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

相关推荐
JavaGuide4 分钟前
JDK 25(长期支持版) 发布,新特性解读!
java·后端
用户3721574261354 分钟前
Java 轻松批量替换 Word 文档文字内容
java
白鲸开源6 分钟前
教你数分钟内创建并运行一个 DolphinScheduler Workflow!
java
CoovallyAIHub39 分钟前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
Java中文社群1 小时前
有点意思!Java8后最有用新特性排行榜!
java·后端·面试
代码匠心1 小时前
从零开始学Flink:数据源
java·大数据·后端·flink
间彧1 小时前
Spring Boot项目中如何自定义线程池
java
间彧1 小时前
Java线程池详解与实战指南
java
用户298698530142 小时前
Java 使用 Spire.PDF 将PDF文档转换为Word格式
java·后端
NAGNIP2 小时前
Serverless 架构下的大模型框架落地实践
算法·架构