【JavaSE总结】数组

一、数组的定义

两种定义方式,以整型数组为例,同一数组只能存放同一种类型的数据

int demo01[] = new int[3];
int demo02[] = {1,2,3};

需要注意的是,数组定义一定要实例化,不然会发生异常:空指针异常NullPointerException

二、数组的使用

利用下标调用数组

int data[] = null;
data = new int[3]; 
data[0] = 10;
data[1] = 20;
data[2] = 30;

在使用下标时,可能会触发生异常:数组下标越界异常ArrayIndexOutOfBoundsException
通常我们在遍历数组时,用 增强for循环 会更方便一些。

三、二维数组

与一维数组的定义与使用相类似

int demo01[][] = new int[3][2];
int demo02[][] = {{1,2,3},{4,5,6}};
int data[][] = null;
data = new int[3][4]; 
data[0][1] = 10;
data[0][2] = 20;
data[1][2] = 30;

四、Arrays工具类

一些常用的方法有:

方法用途
fill填充数组
sort排序(从小到大,字母先大写后小写)
toString转成字符串类型,用[]框起来,用逗号分隔
equals比较两个数组是否看上去完全一样
binarySearch二分法找已排序数组指定元素的索引值
copeOfRange截取数组的某一段

举几个例子:

int[] arr = new int[5];
Arrays.fill(arr,4);//给所有值赋值4
String str = Arrays.toString(arr);
System.out.print(str);

输出:[4,4,4,4,4]

int demo[] = {3,1,2,4,5};
Arrays.sort(demo);
String str = Arrays.toString(demo);
System.out.println(str);

输出:[1,2,3,4,5]

int demo[] = {3,1,2,4,5};
int demo2[] = {1,2,3,4,5};
boolean equals = Arrays.equals(demo, demo2);//顺序不一样
System.out.println(equals);

输出:false

int demo[] = {1,2,3,4,5};
int demo2[] = Arrays.copyOfRange(demo,1,3);
int index = Arrays.binarySearch(demo,3);
String s = Arrays.toString(demo2);
System.out.println(s);
System.out.println(index);

输出:[2,3]
2

五、排序算法

1、冒泡排序

排序原理:数组元素两两比较,交换位置,大元素往后放,那么经过一轮比较后,最大的元素就会出现在最大索引处。

int arr[] = {24,69,80,57,13};//待排序数组
for(int i=0;i<arr.length;i++){
     for(int j=0;j<arr.length-i-1;j++){
         if(arr[j]>arr[j+1]){
             int temp = arr[j];
             arr[j] = arr[j+1];
             arr[j+1] = temp;
         }
     }
 }
 String str = Arrays.toString(arr);
 System.out.println(str);

输出:[13, 24, 57, 69, 80]

2、选择排序

排序原理:从0索引处开始,依次和后面的元素进行比较,小的元素往前放,经过一轮比较后,最小的元素就出现在了最小索引处。

int[] arr = {24,69,80,57,13};//待排序数组
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;
         }
     }
 }
String str = Arrays.toString(arr);
System.out.println(str);

输出:[13, 24, 57, 69, 80]

3、插入排序

排序原理:将一个记录插入到一个长度为m的有序表中,使之仍保持有序。

int arr[] = {24,69,80,57,13};//待排序数组
for(int i=1;i<arr.length;i++){
    int j = i;
    while(j>0 && arr[j]<arr[j-1]){
        int temp = arr[j];
        arr[j] = arr[j-1];
        arr[j-1] = temp;
        j--;
    }
}
String str = Arrays.toString(arr);
System.out.println(str);

输出:[13, 24, 57, 69, 80]

4、希尔排序

排序原理:选取合适的增量,进行比较,一轮过后,数组会趋向有序,再不断减小增量进行插入排序,直至增量为1。
可以理解为通过增量分组进行插入排序,降低了时间复杂度。

5、快速排序

排序原理:在数组中选择一个基准数,小的放到左边,大的放到右边。第一轮之后,分别在两个区域多次重复上述操作。

6、归并排序

排序原理:把数组看成有n个长度为1的子序列,然后两两归并,变成n/2个长度为2的子序列,如此重复,最后归并成1个长度为n的序列。

7、基数排序

排序原理:分配再收集最大数位数次,先定义0-9(10个)临时“桶,”分配是指从个位开始每一轮按更高一位的值将数据到分配到对应的“桶中,收集指将数据从桶中按顺序收集回数组中。
确定一个数是几位数:
在java.util.Arrays包下

String.valueOf(那个数).length();

如果这是个浮点数,得出的结果是位数+1,因为小数点算1位。


上一篇 方法
下一篇 面向对象

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新手且笨蛋37

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值