zoukankan      html  css  js  c++  java
  • 数组

    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] + " ");
            }
        }
    }
  • 相关阅读:
    渗透测试中的文件传输通道1- cmd下下载文件
    内网渗透常用命令
    技术剖析中国菜刀原理
    win8 iis安装及网站发布
    C++与C的区别一
    C语言实现单链表,并完成链表常用API函数
    C语言实现数组及链表的快速排序
    使用C语言封装数组,动态实现增删改查
    C语言中静态断言的使用
    二分查找法C语言实现
  • 原文地址:https://www.cnblogs.com/zmy-520131499/p/11074942.html
Copyright © 2011-2022 走看看