zoukankan      html  css  js  c++  java
  • Java学习之数组

    1. 程序=数据结构+算法
      算法:解决问题的流程、步骤--顺序、分支、循环
      数据结构:将数据按照某种特定的结构来保存
      要怎么存?
      设计合理的数据结构会有好的算法
      数组就是最基本的一种数据结构
    2. 数组
      1)相同数据类型元素的集合
      2)数据是一种数据类型(引用类型)

    int a;//声明整型变量a
    int[] a;//声明整型数组变量a
    
    //声明一个整型数组a,包含5个元素
    //每个元素都是整型,默认值为0
    int[] a = new int[5]; //0,0,0,0,0
    
    //声明浮点型数组b,包含10个元素
    //每个元素都是浮点型,默认值为true
    double[] b = new double[10];

    3)数组的定义:
    int[] arr = new int[4];
    4)数组的初始化
    int[] arr1 = new int[3]; //0,0,0
    //只能声明的同时用{}赋值
    int[] arr2 = {0,0,0}; //0,0,0
    int[] arr3 = new int[]{1,4,7}; //1,4,7
    5)数组的访问
    5.1)通过数组名.length来获取数组的长度
    int[] arr = new int[3];
    System.out.println(arr.length); //3
    5.2)通过下标/索引来访问数组中的元素
    下标从0开始,最大到arr.length-1
    int[] arr = new int[3];
    arr[0] = 100;
    arr[1] = 200;
    arr[2] = 300;
    arr[3] = 400; //数组下标越界异常

    arr[arr.length-1] = 800; //给最后一个元素赋值
    System.out.println(arr[arr.length-1]); //打印最后一个元素
    6)数组的遍历
    int[] arr = new int[300];
    arr[0] = 100;
    arr[1] = 100;
    arr[2] = 100;
    arr[3] = 100;
    arr[4] = 100;
    ...
    arr[299] = 100;

    //数组赋值
    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 a : arr) {
        System.out.println(a);
    }
    //循环当中的问题
    for
    (/*1*/;/*2*/i<=100;/*3*/i++) { /*4*/ sum +=i; } /* * 循环执行顺序 * 124 324 324 324 */
    3. 找最大数的算法
    1). 假设第一个元素为最大值
    int max = arr[0];
    2). 遍历剩余元素
    for(int i=1;i<arr.length;i++) {
    if(max<arr[i]) {
    max = arr[i];
    }
    }
    4. 数组的复制
    int[] a = {10,20,30,40,50};
    int[] b = new int[6];
    //a:源数组
    //0:源数组的起始下标
    //b:目标数组
    //0:目标数组的起始下标
    //5:赋值元素的个数
    System.copy(a,0,b,0,5);
    //a:源数组
    //a1:目标数组
    //6:目标数组的长度
    int[] a1 = Arrays.copyof(a, 6);
    5. 数组的排序
    Arrays.sort(arr); //升序
    冒泡算法---原理:
    1)四个数冒三轮
    2)每一轮都是从第一个元素开始冒
    每一次都是和它的下一个元素比
    3)冒出来的就不再参与比较
    int arr[] = {56,8,23,1};
    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;
    }
    }
    }
    第一轮:
    56和8比,换,8,56,23,1
    56和23比,换,8,23,56,1
    56和1比,换,8,23,1,56-------56冒出来了
    第二轮:
    2和23比,不换
    23和1比,换,8,1,23,56-------23冒出来了
    第三轮:
    2和1比,换,1,8,23,56--------8冒出来了
    public class BubbleSort {
        public static void main(String[] args) {
            int[] arr = new int[10];
            for(int i=0;i<arr.length;i++) {
                arr[i] = (int)(Math.random()*100);
            }
            System.out.println("原数组为:");
            for(int i=0;i<arr.length;i++) {
                System.out.print(arr[i]+" ");
            }
            System.out.println();
            //冒泡排序
            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;
                    }
                }
            }
            System.out.println("排序后的数组为:");
            for(int i=0;i<arr.length;i++) {
                System.out.print(arr[i]+" ");
            }
        }
    }


  • 相关阅读:
    Python之异常篇 [待更新]
    python脚本工具 - 4 获取系统当前时间
    python脚本工具 - 3 目录遍历
    数字签名和数字证书到底是个神马玩意?
    CSRF攻击[转]
    Python之数据结构篇
    Python之模块篇
    Python之函数篇
    python脚本工具-2 去除扩展名后提取目录下所有文件名并保存
    python脚本工具-1 制作爬虫下载网页图片
  • 原文地址:https://www.cnblogs.com/guodong-wang/p/6932002.html
Copyright © 2011-2022 走看看