数组的学习

目录

1、数组的声明和使用

2、arraycopy的学习

3、类型的范围

4、查找方式

4.1线性查找

4.2二分查找

5、可变长参数列表

6、冒泡排序

7、二维数组

7.1二维数组的使用和声明

7.2杨辉三角的应用

1、数组的声明和使用

int[] array = new int[数字];//动态,一旦数组确定长度,数组的大小就固定了

也可以使用下标进行赋值如:

array[0] = 46;

array[1] = 354;

int[] array = {5,6,4,8,12,65};//静态

2、arraycopy的学习

         * 参数声明:
         *   src:源数组(要拷贝的数组)
         *   srcPos:源数组的元素的索引位置(从第几个元素开始拷贝)
         *   dest:目标数组(要拷贝进的数组)
         *   destPos:目标数组的索引位置
         *   length:拷贝的元素个数

System.arraycopy(src, srcPos, dest, destPos, length);

3、类型的范围

byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)。

short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)。

int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)。

long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)。

float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节。

double 1.797693e+308~ 4.9000000e-324 占用8个字节。

booleam 只有两个值true或者false。

char的范围:\u0000 ----\uFFFF。

4、查找方式

4.1线性查找

 从数组的第一个元素依次的比较,如果该元素==关键字元素,返回该元素对应的索引。如果没有找到,返回-1。例子:

	public static int linearSearch(int key, int[] list) {
		for(int i = 0; i < list.length; i++) {
			if(key == list[i]) {
				return i;
			}
		}
		return -1;
	}

4.2二分查找

又成对半查找:前提是数组为有序数组。例子如下:

	public static int binarySearch(int key, int[] list) {
		int low = 0;
		int high = list.length - 1;
		while(high >= low) {
			int mid = (low + high) / 2;
			if(key == list[mid])
				return mid;
			else if(key <= list[mid]) {
				high = mid -1;
			}else {
				low = mid + 1;
			}			
		}
		
		return -1;
	}

也可以直接调用Arrays里的方法:

Arrays.binarySearch(数组,查找的元素)

5、可变长参数列表

     * 参数个数由用户决定
     * 在jdk1.6以前,只能通过数组传递不定个数的整数。

     * jdk1.6以后,可以使用可变参数来完成
     *         本质是:数组
     *
     * 注意:一个方法只能存在一个可变参数;可变参数只能存在参数列表的末尾。

6、冒泡排序

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。例子如下:

	/**
	 * 冒泡排序(下沉排序)
	 * @param list 将list中的元素进行降序排列
	 */
	public static void sink(int []list) {
		boolean needNextPass = true;
		for(int i = 1; i < list.length && needNextPass; i++) {
			needNextPass = false;
			for(int j = 0; j < list.length - i; j++) {
				if(list[j] < list[j + 1]) {
					int temp = list[j];
					list[j] = list[j + 1];
					list[j + 1] = temp;
					needNextPass = true;
				}
			}
		}
	}

如果要进行升序的话,可以调用Array.sort的方法

Arrays.sort(数组名);
System.out.println("排序后:"+Arrays.toString(数组));
/* 打印排序后的数组 */

Arrays的toString()方法是一个重载的方法。

7、二维数组

7.1二维数组的使用和声明

int[][] array = new int[数字][];//长度为多少行的二维数组,取决于[]里数字的大小

//获取数组的长度
        System.out.println(array.length);

    //二维数组中的每个元素又是一个一维数组
        System.out.println(array[0]);
        System.out.println(array[0].length);

二维数组的循环遍历

for循环遍历
for(int i = 0; i < array.length; i++) {
			for(int j = 0; j < array[i].length; j++) {
				System.out.print(array[i][j] + "   ");
			}
			System.out.println();
		}
foreach循环
for(int[] line : array) {
			for(int ele : line)
				System.out.print(ele + "    ");
			System.out.println();
		}

7.2杨辉三角的应用

 * 提示:


 * 1、第一行有1个元素,第n行有n个元素
 * 2、每一行的第一个元素和最后一个元素都是1
 * 3、从第三行开始,对于非第一个元素和最后一个元素的元素

System.out.println("请输入杨辉三角的行数:");
		Scanner input = new Scanner(System.in);
		int line = input.nextInt();
		input.close();
		
		int[][] triangle = new int[line][];
		//初始化每列的元素大小
		for(int i = 0; i < triangle.length; i++) {
			triangle[i] = new int[i + 1];
		}
		//初始化杨辉三角的值
		for(int i = 0; i < triangle.length; i++) {
			triangle[i][0] = triangle[i][i] = 1;
			for(int j = 1; j < triangle[i].length - 1;j++) {
				triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
			}
		}
		
		for(int i = 0; i < triangle.length;i++) {
			for(int j = 0; j <triangle[i].length; j++) {
				System.out.printf("%5d",triangle[i][j]);
			}
			System.out.println();
		}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值