JAVA学习笔记——数组

一、数组定义

1、数组前景知识

(1)程序 = 算法 + 数据结构
(2)数据结构,简单说是把数据按照特定的某种结构来保存,设计合理的数据结构是解决问题的前提。
(3)算法,解决问题的流程/步骤(顺序、分支、循环结构)。
(4)设计良好的数据结构会导致好的算法。
(5)数组是最基本的一种数据结构。

2、数组定义

(1)相同数据类型的元素组成的集合。
(2)数据是一种数据类型(引用类型)。 元素按线性顺序排列。所谓线性顺序是只除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素(“一个跟一个”);可以通过元素所在位置的顺序号(下标)做标识来访问每一个元素(小标从0开始,最大到元素个数-1)
(3)数组的定义:

int[] arr = new int[4];
 double[] arrs = new double[6];

(4)数组的初始化的三种方式

• int[] arr = new int[4];//0,0,0,0
• int[] arr = {1,2,3,4};//1,2,3,4
• int[] arr = new int[] {1,2,3,4};//1,2,3,4
• int[] arr;
 arr = new int[]{1,2,3,4};//1,2,3,4

(5)数组的访问
a…length获取arr的长度
b.通过下标来访问数组中的元素
下标从0开始,最大到.length-1
(6)数组的遍历

int[] arr = new int[10];
   for(int i=0;i<arr.length;i++){
          arr[i]=100;
   }
   for(int i=0;i<arr.length;i++){
          System.out.println(arr[i]);
   }
   for(int i = arr.length-1;i>=0;i--){
          System.out.println(arr[i]);
   }

(7)数组的复制

方法一:使用System.arraycopy() 方法可以实现数组的复制。

System.arraycopy(源数组,源数组的起始下标,目标数组,目标数组的起始下标,要复制的元素个数) ;

方法二:使用Arrays.copyOf() 方法可以实现数组的复制

java有序数组哪些 java数组有序吗_数据结构


(8)数组的扩容

数组的长度在创建后是不可改变的,所谓扩容是指创建一个更大的新数组并将原有数组的内容复制到其中。

可以使用Arrays.copyOf() 方法可以实现数组的扩容。

import java.util.Arrays;

扩展后的数组 = Arrays.copyOf(源数组,扩展后的长度);

3、找最大数的算法

(1)假设第一个数为最大数

int max = arr[0];

(2)遍历剩余元素,剩余每个元素与max比,若大于max,则改变max的值为较大数。

for(int i=1;i<arr.length;i++){
 if(arr[i]>max){
 max = arr[i];
 }
 }

4、数组的排序

(1)数组的排序

  • 一般情况下,通过排序过程中数组元素的交换次数来衡量排序算法的优劣
  • 常见的排序算法有:插入排序、冒泡排序、快速排序等。
  • Arrays.sort()方法用于数组排序 ,排序时升序,排序时首选此方法,效率最高。
    (2)冒泡排序
  • 冒泡排序的原则:比较相邻的元素,如果违反最后的顺序准则,则交换
  • 简化理解:第一次找到所有元素中最大的放在最后一个位置上,不再变动;第二次找到剩余所有元素中最大的放在倒数第二个位置上,不在变动;以此类推,直到排序完成。
  • 比较时既可以采用“下沉”的方式,也可以使用“上浮”方式进行。
for(int i=0;i<arr.length-1;i++){//控制循环的轮数
   for(int j=0;j<arr.length-1-i;j++){//控制每轮比的次数
       if(arr[j]>arr[j+1]){//和他下一个数相比
          int t = arr[j];
          arr[j] = arr[j+1];
          arr[j+1] = t;
         }
   }
}