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

是不是及其方便简单呢~


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

相关推荐
wyh要好好学习3 分钟前
SpringMVC快速上手
java·spring
尢词5 分钟前
SpringMVC
java·spring·java-ee·tomcat·maven
Mr. zhihao12 分钟前
享元模式在 JDK 中的应用解析
java·享元模式
茶馆大橘15 分钟前
微服务系列五:避免雪崩问题的限流、隔离、熔断措施
java·jmeter·spring cloud·微服务·云原生·架构·sentinel
wrx繁星点点15 分钟前
享元模式:高效管理共享对象的设计模式
java·开发语言·spring·设计模式·maven·intellij-idea·享元模式
真的想不出名儿19 分钟前
Java基础——反射
java·开发语言
鱼跃鹰飞21 分钟前
大厂面试真题-简单说说线程池接到新任务之后的操作流程
java·jvm·面试
菜菜-plus28 分钟前
java设计模式之策略模式
java·设计模式·策略模式
努力编程的阿伟38 分钟前
【Java SE语法】抽象类(abstract class)和接口(interface)有什么异同?
java·开发语言
Dola_Pan1 小时前
C++算法和竞赛:哈希算法、动态规划DP算法、贪心算法、博弈算法
c++·算法·哈希算法