6数组

数组
数组
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。
Java 语言中提供的数组是用来存储固定大小的同类型元素。
你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,…,number99。
数组的声明
dataType[] arrayRefVar; // 首先方法
dataType arrayRefVar[]; // 效果相同,但不是首选方法
实例:
int[] arrayInt; // 首先方法
int arrayInt[]; // 效果相同,但不是首选方法
建议使用 dataType[] arrayRefVar 的声明风格声明数组变量。 dataType arrayRefVar[] 风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。
创建数组:
int[] arrayInt = new int[4];
数组元素赋值:
arrayInt[0] = 0;
arrayInt[1] = 1;
arrayInt[2] = 2;
arrayInt[3] = 3;
数组下标从0开始,到数组长度-1为止。
直接赋值的方式:
int[] arrayInt = {0,1,2,3,4,5};
作业:快速排序、冒泡排序|希尔排序、归并排序
int[] arr = {23, 100, 40, 45, 45, 67, 32, 12, 5, 13, 53, 68};

快速排序: https://www.cnblogs.com/coderising/p/5708801.html
http://blog.csdn.net/Yexiaofen/article/details/78018204
数组的操作
数组的拷贝
System类中包含了一个arraycopy(public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);)方法,该方法可以将src数组里的元素值赋给dest数组的元素,其中srcpos指定从src数组的第几个元素开始赋值,length参数指定将src数组的多少个元素赋值给dest数组的元素。
public class ArrayTest1 {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7};
int[] arr1 = {8, 9, 10, 11, 12, 13};

    System.arraycopy(arr, 2, arr1, 2, 3);
    for (int i : arr1) {
        System.out.printf(i + "\t");
    }
}

}
使用Arrays类
打印数组:
public class ArraysTest {
public static void main(String[] args) {
int[] arr = {23, 100, 40, 45, 45, 67, 32, 12, 5, 13, 53, 68};
System.out.println(arr);
System.out.println(Arrays.toString(arr));
}
}
数组的排序
public class ArraysTest {
public static void main(String[] args) {
int[] arr = {23, 100, 40, 45, 45, 67, 32, 12, 5, 13, 53, 68};
System.out.println(arr);
System.out.println(Arrays.toString(arr));

    Arrays.sort(arr);
    System.out.println(Arrays.toString(arr));
}

}
输出结果:
[I@1922e15b
[23, 100, 40, 45, 45, 67, 32, 12, 5, 13, 53, 68]
[5, 12, 13, 23, 32, 40, 45, 45, 53, 67, 68, 100]
多维数组
二维数组:数组的数组,二维数组的每一个元素都是一个一维数组
定义格式:
dataType[][] arrayRefVar; // 首选方法
dataType arrayRefVar[][]; // 效果相同,但不是首选方法
int[][] arr4 = new int[][3]; // 错误
二维数组的遍历:
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
System.out.printf(“arr2[” + i + “][” + j + "] = " + arr2[i][j] + “\t”);
}
System.out.println();
}

    // 二维数组的遍历 加强for循环
    for (int[] ints : arr2) {
        for (int anInt : ints) {
            // 这样遍历不能直接获取到下标
        }
    }

二维数组的反转—头尾交换
// 二位数组的翻转–头尾交换
for (int start = 0, end = arr2.length - 1; start < end ; start++, end–) {
int[] temp = arr2[start];
arr2[start] = arr2[end];
arr2[end] = temp;
}

    for (int i = 0; i < arr2.length; i++) {
        for (int j = 0; j < arr2[i].length; j++) {
            System.out.printf("arr2[" + i + "][" + j + "] = " + arr2[i][j] + "\t");
        }
        System.out.println();
    }

杨辉三角
/*
杨辉三角用二维数组的理解:
arr[i][j] = arr[i -1][j] + arr[i - 1][j - 1]
*/
// 杨辉三角
int row = 5;
int[][] yanghui = new int[row][];
// 遍历二位数组
for (int i = 0; i < row; i++) {
yanghui[i] = new int[i + 1];
// 遍历这个一维数组,添加元素
for (int j = 0; j <= i; j++) {
//每一列的开头和结尾元素为1,开头的时候,j=0,结尾的时候,j=i
if (j == 0 || j == i) {
yanghui[i][j] = 1;
} else {//每一个元素是它上一行的元素和斜对角元素之和
yanghui[i][j] = yanghui[i - 1][j] + yanghui[i - 1][j - 1];
}
System.out.print(yanghui[i][j] + “\t”);
}
System.out.println();
}
作业:
https://www.cnblogs.com/gl-developer/p/6431331.html
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自动控制节水灌溉技术的高低代表着农业现代化的发展状况,灌溉系统自动化水平较低是制约我国高效农业发展的主要原因。本文就此问题研究了单片机控制的滴灌节水灌溉系统,该系统可对不同土壤的湿度进行监控,并按照作物对土壤湿度的要求进行适时、适量灌水,其核心是单片机和PC机构成的控制部分,主要对土壤湿度与灌水量之间的关系、灌溉控制技术及设备系统的硬件、软件编程各个部分进行了深入的研究。 单片机控制部分采用上下位机的形式。下位机硬件部分选用AT89C51单片机为核心,主要由土壤湿度传感器,信号处理电路,显示电路,输出控制电路,故障报警电路等组成,软件选用汇编语言编程。上位机选用586型以上PC机,通过MAX232芯片实现同下位机的电平转换功能,上下位机之间通过串行通信方式进行数据的双向传输,软件选用VB高级编程语言以建立友好的人机界面。系统主要具有以下功能:可在PC机提供的人机对话界面上设置作物要求的土壤湿度相关参数;单片机可将土壤湿度传感器检测到的土壤湿度模拟量转换成数字量,显示于LED显示器上,同时单片机可采用串行通信方式将此湿度值传输到PC机上;PC机通过其内设程序计算出所需的灌水量和灌水时间,且显示于界面上,并将有关的灌水信息反馈给单片机,若需灌水,则单片机系统启动鸣音报警,发出灌水信号,并经放大驱动设备,开启电磁阀进行倒计时定时灌水,若不需灌水,即PC机上显示的灌水量和灌水时间均为0,系统不进行灌水。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值