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

是不是及其方便简单呢~


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

相关推荐
努力进修1 分钟前
“探索Java List的无限可能:从基础到高级应用“
java·开发语言·list
politeboy1 分钟前
k8s启动springboot容器的时候,显示找不到application.yml文件
java·spring boot·kubernetes
王燕龙(大卫)2 分钟前
leetcode 数组中第k个最大元素
算法·leetcode
Daniel 大东1 小时前
BugJson因为json格式问题OOM怎么办
java·安全
不去幼儿园1 小时前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习
Mr_Xuhhh1 小时前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
Ajiang28247353042 小时前
对于C++中stack和queue的认识以及priority_queue的模拟实现
开发语言·c++
盼海2 小时前
排序算法(五)--归并排序
数据结构·算法·排序算法
幽兰的天空2 小时前
Python 中的模式匹配:深入了解 match 语句
开发语言·python
Theodore_10225 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee