数组

1.数组的理解:数组(Array),是多个相同类型是数据一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理.

2.数组的相关的概念:

  1. 数组名
  2. 元素
  3. 角标 、下标 、索引
  4. 数组的长度 : 元素的个数

3.数组的特点:

  1.  数组是序排列的
  2. 数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
  3. 创建数组对象会在内存中开辟一整块连续的空间
  4. 数组的长度一旦确定,就不能修改。

4. 数组的分类:

  1.  照维数:一维数组、二维数组、。。。
  2. 照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组

数据结构:
  1.数据与数据之间的逻辑关系:集合、一对一、一对多、多对多
  2.数据的存储结构:
线性表:顺序表(比如:数组)、链表、栈、队列
树形结构:二叉树
图形结构:

算法:
排序算法:
搜索算法:

public class ArrayUtilsTest {

    /*
     *  2. 求数值型数组中元素的最大值、最小值、平均数、总和等

        3. 数组的复制、反转、查找(线性查找、二分法查找(了解))
        
        4. 数组元素的排序算法

     */
    public static void main(String[] args) {
        
        int[] numbers = new int[]{10,20,30,15,16,19};
        //求数组中的最大值
        int maxNumber = numbers[0];//记录第一个元素的数据
        //循环numbers中所有的元素
        for (int i = 1; i < numbers.length; i++) {
            if(maxNumber < numbers[i]){
                //记录该值
                maxNumber = numbers[i];
            }
        }
        System.out.println("maxNumber=" + maxNumber);
        
        System.out.println("---------------------总和,平均数----------------------");
        
        int sum = 0; //用来记录总和
        for (int i = 0; i < numbers.length; i++) {
            sum += numbers[i];
        }
        System.out.println("sum=" + sum + " 平均数=" + sum / numbers.length);
        
        System.out.println("---------------------复制----------------------");
        
        //创建一个数组,长度和numbers的长度一样
        int[] copyNumber = new int[numbers.length];
        //for循环-将numbers中的数据赋值到copyNumber中
        for (int i = 0; i < copyNumber.length; i++) {
            copyNumber[i] = numbers[i];
        }
        
        System.out.println("----------------copyNumber------------------");
        //修改copyNumber中的值
        copyNumber[0] = 100;
        for (int i = 0; i < copyNumber.length; i++) {
            System.out.print(copyNumber[i] + " ");
        }
        System.out.println();
        System.out.println("----------------numbers------------------");
        for (int i = 0; i < numbers.length; i++) {
            System.out.print(numbers[i] + " ");
        }
        System.out.println();
    }
}

数组反转

/*
     数组的反转
 */
public class ArrayUtilsTest2 {

    public static void main(String[] args) {
        
        int[] numbers = new int[]{10,20,30,15,16,19};
        
        /*
        //第一种方式:创建新的数组
        int[] reverseNumber = new int[numbers.length];
        //将numbers中的数据从后向前进行遍历
        for(int i = numbers.length - 1;  i >= 0; i--){
             reverseNumber[numbers.length - 1 - i] = numbers[i];
        }
        //遍历reverseNumber
        for (int i = 0; i < reverseNumber.length; i++) {
            System.out.print(reverseNumber[i] + " ");
        }
        */
        System.out.println();
        System.out.println("-----------------------------------------------------");
        
        //第二种方式 : 直接将numbers中的数据进行反转
        
        for(int i = 0, j = numbers.length - 1; i < numbers.length / 2; i++,j--){
            int temp = numbers[i];
            numbers[i] = numbers[j];
            numbers[j] = temp;
        }
        
        //遍历数组中的元素
        for (int i = 0; i < numbers.length; i++) {
            System.out.print(numbers[i] + " ");
        }
    }
}

数组线性查找

/*
     线性查找、二分法查找(了解))
 */
public class ArrayUtilsTest3 {

    public static void main(String[] args) {
        
        int[] numbers = new int[]{10,20,30,15,16,19,30};
        
        int findNumber = 30; //要查找的数值
        
        int index = -1; //用来记录查找到的数值的索引位置
        
        for (int i = 0; i < numbers.length; i++) {
            
            if(findNumber == numbers[i]){
                index = i;
                break;//不考虑有多个,找到一个就结束
            }
        }
        
        //判断是否找到了需要查找数据
        if(index == -1){//没找到
            System.out.println("亲!!没找到您需要的数据哦");
        }else{
            System.out.println("您要查找的数值在" + index + "索引位置上");
        }
    }
}

冒泡排序

/*
     冒泡排序
 */
public class BubbleSort {

    public static void main(String[] args) {
        
        int[] numbers = new int[]{10,20,30,15,16,19};
        
        //控制比较几轮
        for (int i = 0; i < numbers.length - 1; i++) {
            
            //控制比较的次数
            for(int j = 0; j < numbers.length - 1 - i; j++){
                
                //判断是否进行交换
                if(numbers[j] > numbers[j + 1]){
                    //交换
                    int temp = numbers[j];
                    numbers[j] = numbers[j + 1];
                    numbers[j + 1] = temp;
                }
                
            }
        }
        
        //遍历数组中的内容
        for (int i = 0; i < numbers.length; i++) {
            System.out.print(numbers[i] + " ");
        }
    }
}
原文地址:https://www.cnblogs.com/zmy-520131499/p/11074942.html