005Java基础之数组、排序、查找

1、数组

数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。即:数(数据)组(一组)就是一组数据

1、数组的使用

1、数组的定义
数据类型 数组名[] = new 数据类型[大小]
 或者
 数据类型[]  数组名= new 数据类型[大小]
 例如:
 int[]  a = new int[5]int a[]  = new int[5]是等价的

建议使用== 数据类型[] 数组名= new 数据类型[大小]==这种方式
例如:
int [] score = new int[5];
这种方式经常忘记,提醒自己,数组是引用类型,可以直接new 基本数据类型的数组;

2、数组的引用

数组名[下标]

3、静态初始化

int[] a = {1,2,3,4,5,6,7,8,9}

4、数组使用注意事项和细节

(1)数组是多个相同类型数据的组合,实现对这些数据的统一管理(2)数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
(3)数组创建后,如果没有赋值,有默认值int0,short0,byte0,long0,float0.0,double0.0,char\u0000,booleanfalse,Stringnull
(4)使用数组的步骤
1.声明数组并开辟空间
2给数组各个元素赋值
3使用数组
(5)数组的下标是从0开始的。
(6)数组下标必须在指定范围内使用,否则报:下标越界异常,比如:int[]arr=newint[5];则有效下标为0-4
(7)数组属于引用类型,数组型数据是对象(object)

2、数组赋值机制

(1)基本数据类型赋值,这个值就是具体的数据,而且相互不影响。即是值拷贝。intn1=2;intn2=n1;
(2)数组在默认情况下是引用传递,赋的值是地址。
关于基本数据类型赋值方式是值传递,而引用类型赋值是地址传递非常重要在开发中要特别注意
在这里插入图片描述
但有时候我们确实有这样的需要,就是要实现引用类型的值拷贝,修改新的变量后不会影响原来的变量的值。可以这样开辟新的空间,再通过给元素赋予相同值的方法完成。

/**
 * @author Francis
 * @create 2021-06-19 18:56
 */
public class ArrayCopy {
    public static void main(String[] args) {
        //将int[]arr1={10,20,30};拷贝到arr2数组,
        // 要求数据空间是独立的.
        int[] arr1 = {10, 20, 30};
        //创建一个新的数组arr2,开辟新的数据空间
        // 大小arr1.length;
        int[] arr2 = new int[arr1.length];
        //遍历arr1,把每个元素拷贝到arr2对应的元素位置
        for (int i = 0; i < arr1.length; i++) {
            arr2[i] = arr1[i];
        }
        //修改arr2,不会对arr1有影响
        arr2[0] = 100;
        //输出arr1
        System.out.println("====arr1的元素====");
        for (int i = 0; i < arr1.length; i++) {
            System.out.println(arr1[i]);//10,20,30
        }
        System.out.println("====arr2的元素====");
        for(int i=0;i<arr2.length;i++){
            System.out.println(arr2[i]);
        }
    }

}

3、数组的扩容

思路:定义一个比原来的数组array长度大一个的数组newArray,循环将原来数组array的每个元素的值赋给newArray,并将newArray的最后一个元素给赋予需要的值,最后将newArray赋给array。

4、数组的缩减

思路是数组扩容的逆向

2、排序

排序是将多个数据,依指定的顺序进行排列的过程。
排序的分类:
(1)内部排序:
指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法);
(2)外部排序法
数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)

1、冒泡排序法

冒泡排序(BubbleSorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。
在这里插入图片描述

/**
 * @author Francis
 * @create 2021-06-20 11:11
 */
public class BubbleShort {
    public static void main(String[] args) {
        int[] arr = {12, 56, 48, 369, -1, -56, 45, 96};
        int temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            //外层循环是4次
            for (int j = 0; j < arr.length - 1 - i; j++) {
                //4次比较-3次-2次-1次//如果前面的数>后面的数,就交换
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
            System.out.println("\n==第" + (i + 1) + "轮==");
        }
        for (int j = 0; j < arr.length; j++) {
            System.out.print(arr[j] + "\t");
        }
    }
}

3、查找

在java中,我们常用的查找有两种:
(1)顺序查找
(2)二分查找(要求查找的数组是有序的)

4、二维数组

二维数组的注意事项和使用细节
(1)一维数组的声明方式有
:int[] x或者intx[]
(2)二维数组的声明方式有:
==int[][] y或者int[] y[] 或者int y[][]
(3)二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如:map[][]是一个二维数组
(4)二维数组也有动态初始化和静态初始化两种方式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java中可以使用线性查找和二分查找两种方法来查找数组中的元素。 线性查找是逐个遍历数组元素,直到找到目标元素或遍历完整个数组。如果找到目标元素,返回该元素在数组中的索引;如果遍历完整个数组仍未找到目标元素,则返回-1。示例代码如下: ``` public static int getIndex(int[] arr, int key) { for (int i = 0; i < arr.length; i++) { if (arr[i == key) { return i; // 查找到该元素返回该元素在数组中的索引 } } return -1; // 没有查找到该元素返回-1 } ``` 二分查找是一种更高效的查找算法,但要求数组必须有序。它通过将数组分成两部分,并比较目标元素与中间元素的大小来确定目标元素的位置。如果找到目标元素,返回该元素在数组中的索引;如果未找到目标元素,则返回"-插入点"。插入点指的是在数组中将目标元素插入的位置,即范围内第一个大于目标元素的元素索引。示例代码如下: ``` import java.util.Arrays; public class FindArray { public static void main(String[] args) { double[] score = {99.5, 100, 98, 97.5, 110, 95, 85.5, 100}; Arrays.sort(score); // 对数组进行排序 int index1 = Arrays.binarySearch(score, 100); // 查找100的位置 int index2 = Arrays.binarySearch(score, 60); // 查找60的位置 System.out.println("查找到100的位置是:" + index1); System.out.println("查找到60的位置是:" + index2); } } ``` 在以上示例中,我们先使用`Arrays.sort()`方法对数组进行排序,然后使用`Arrays.binarySearch()`方法进行二分查找。当找到目标元素时,返回其在数组中的索引;否则返回"-插入点"。 希望以上解答能满足您的需求,如果还有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [JAVA--数组元素查找方法](https://blog.csdn.net/Xin6Yang/article/details/88778033)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Java 数组查找指定元素](https://blog.csdn.net/weixin_52899638/article/details/124508080)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值