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

是不是及其方便简单呢~


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

相关推荐
数据小爬虫@14 分钟前
如何高效利用Python爬虫按关键字搜索苏宁商品
开发语言·爬虫·python
ZJ_.16 分钟前
WPSJS:让 WPS 办公与 JavaScript 完美联动
开发语言·前端·javascript·vscode·ecmascript·wps
Narutolxy21 分钟前
深入探讨 Go 中的高级表单验证与翻译:Gin 与 Validator 的实践之道20241223
开发语言·golang·gin
XiaoLeisj27 分钟前
【递归,搜索与回溯算法 & 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(二)
数据结构·算法·leetcode·决策树·深度优先·剪枝
Hello.Reader29 分钟前
全面解析 Golang Gin 框架
开发语言·golang·gin
禁默40 分钟前
深入浅出:AWT的基本组件及其应用
java·开发语言·界面编程
Cachel wood1 小时前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Jasmine_llq1 小时前
《 火星人 》
算法·青少年编程·c#
Code哈哈笑1 小时前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习