Java小练习 数组的复制,反转及查找(线性,二分)

/*
    算法:
    数组的复制,反转,查找(线性查找,二分查找)
*/

import java.util.Scanner;

public class arrayCopyReverseSearch {
    public static void main(String[] args) {
        String[] arr = new String[]{"AA", "BB", "CC", "DD", "EE", "FF"};
        //数组的复制
        String[] arr1 = new String[arr.length];
        for (int i = 0; i < arr.length; i++) {
            arr1[i] = arr[i];
            System.out.print(arr1[i]);
        }
        System.out.println();
        System.out.println("--------------------------");
        //数组的反转
        for (int i = 0; i < arr.length / 2; i++) {
            String temp = arr[i];
            arr[i] = arr[arr.length - 1 - i];
            arr[arr.length - 1 - i] = temp;
        }
        //遍历
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }
        System.out.println();
        System.out.println("--------------------------");
        //查找
        //1,线性查找
        boolean isSearched1 = false;
        System.out.println("请输入arr1中要查找的元素");
        Scanner scan = new Scanner(System.in);//输入要查找的元素
        String dest1 = scan.next();
        for (int i = 0; i < arr1.length; i++) {
            if (dest1.equals(arr1[i])) {//即dest=arr1[i]
                System.out.println("查找成功," + dest1 + "位于数组arr1第" + (i + 1) + "个");
                isSearched1 = true;
                break;
            }
        }
        if (!isSearched1) {
            System.out.println("很抱歉没有找到");
        }
        //2,二分法查找
        //前提:查找的序列必须有序
        int[] arr2 = new int[]{-51, -31, -25, -10, 1, 17, 31, 48, 79, 97};
        System.out.println("请输入arr2中要查找的元素");
        int dest2 = scan.nextInt();
        //设置首尾"指针"
        int head = 0;
        int end = arr2.length-1;
        boolean isSearched2 = false;
        while (head <= end) {
            int mid = (head + end) / 2;
            if (dest2 == arr2[mid]) {
                System.out.println("查找成功," + dest2 + "位于数组arr2第" + mid + "个");
                isSearched2 = true;
                break;
            } else if (dest2 < arr2[mid]) {
                end = mid - 1;//若目标数<"中位数",则调整尾指针
            } else {
                head = mid + 1;//若目标数>"中位数",则调整头指针
            }
        }
        if (!isSearched2) {
            System.out.println("很抱歉没有找到");
        }
    }
}

原文地址:https://www.cnblogs.com/xianghaoran/p/12231580.html

时间: 2024-08-28 18:38:46

Java小练习 数组的复制,反转及查找(线性,二分)的相关文章

数组元素复制 反转 学习笔记

package com.ctgu.java.exer; public class TestArray3 { public static void main(String[] args){ int[] arr = new int[]{12,43,9,0,-65,-99,100,9}; int max = arr[0]; for(int i = 1; i < arr.length;i++ ){ if(max < arr[i]){ max = arr[i]; } } System.out.print

day05&lt;Java语言基础--数组&gt;

Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java语言基础(数组的内存图解2二个数组) Java语言基础(数组的内存图解3三个引用两个数组) Java语言基础(数组的初始化静态初始化及内存图) Java语言基础(数组操作的两个常见小问题越界和空指针 Java语言基础(数组的操作1遍历) Java语言基础(数组的操作2获取最值) Java语言基础(数

Java中的数组和方法

3.1 数组的定义和使用 数组(Array)是用来存储一组相同数据类型数据的集合.数组中的每个数据称为一个元素(element),数组可以分为一维数组,二维数组和多维数组.我们 主要讲解一维数组和二维数组. 3.1.1一维数组的声明数组变量 Java中的数组必须先声明然后再使用,Java中声明数组的方式如下: datatype[] arrayRefVar; 或者 datatype arrayRefVar[]; 例如: double[] array; 或者 double array[]; 说明:我

[java小笔记] 关于数组内存管理的理解

数组是大多数编程语言都提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组,java语言的数组变量时引用类型的变量,因此具有java引用变量的特性.在使用数组之前必须对数组对象进行初始化,当所有的数组元素都被分配了合适的内存空间,并指定了初始值是,数组初始化完成. 数组初始化分为 1.静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组的长度. 语法形式: int[] y = {1,2,3,4,5}; 2.动态初始化:初始化时程序员只指定数组的长度,由

java中数组的复制

数组复制使我们在编程过程中常常要使用到的,在java中数组复制我们大概可以分为两种,一种是引用复制,另一种就是深度复制(复制后两个数组互不相干). 下面我们就通过测试的方法来详细看看什么是引用复制和深度复制. 引用复制: 顾名思义就是其值是引用的,值得改变会随着被引用的对象改变. System.out.println("引用复制-----------------------------"); int[] e = {1,2,3,4,56,7,8}; int[] f = e; for(in

数组的复制(test2.java、test3.java)

对于数组的复制,在最开始的时候最容易犯的一个错误,那就是自己认为的申请一个数组,然后将已存在的数组赋值到新申请数组名上,这样是错误的,这样仅仅是将数组的地址复制了过去,并不是,将数组内的元素拷贝过去,这样的复制在C\C++中叫做浅拷贝. 同样话不多说,上代码. 一个典型的错误例子(test2.java): ------------------------------------------------------------------------------- public class tes

java 数组的复制

java数组的复制分为数组地址的复制和值的复制 地址的复制: int []arrA={11,22,33,44}; //创建一个数组 int [] arrB=new int[5]; System.out.println("拷贝地址(引用)之前"); System.out.println("arrA="+arrA); System.out.println("arrB="+arrB); //引用的拷贝 arrB=arrA; System.out.pri

【java】为数组全部元素赋同样的值 以及 数组之间的复制

为数组全部元素赋同样的值 : boolean[] resArray=new boolean[100]; Arrays.fill(resArray, true); 数组之间的复制: System.arraycopy(Object src, int srcPos, Object dst, int dstPos, int length) src:源数组: srcPos:源数组要复制的起始位置: dest:目的数组. destPos:目的数组放置的起始位置: length:复制的长度. 注意:src a

【java】为数组所有元素赋相同的值 以及 数组之间的复制

为数组所有元素赋相同的值 : boolean[] resArray=new boolean[100]; Arrays.fill(resArray, true); 数组之间的复制: System.arraycopy(Object src, int srcPos, Object dst, int dstPos, int length) src:源数组: srcPos:源数组要复制的起始位置: dest:目的数组: destPos:目的数组放置的起始位置: length:复制的长度. 注意:src a