数组

数组

1.定义:一系列相似的元素,按照先后顺序排列在一起的集合。
2.数组的特点:
(1)数组的元素都相似;
(2)数组在创建的时候,就给出大小;
(3)数组中的每个元素,占固定的大小,同时有固定的位置。
3.数组的声明过程有两种
第一种:和C语言比较像

类型  标识符[ ];

第二种:Java特点的数组声明

类型[] 标识符;

4.数组的初始化
①静态初始化:

数据类型  数组名[]={值1,值2,值3,...,值n};

②动态初始化:

数据类型  数组名[]=new  类型[大小];
分次对每个元素进行赋值

第一种数组声明过程与数组的动态初始化

package com.yanan.test;

public class ShuZu {
 public static void main(String[] args) {
 	int a[]=new int[9];  
 	// 使用循环语句对数组元素进行初始化
 	for(int i=0;i<a.length;i++) {
 		a[i]=i+1;
 		System.out.print(a[i]+" ");
 	}
 }
}

运行结果如下:
在这里插入图片描述

注意:Java中的数组元素以0开头而不是以1开头;
	 动态的声明过程,未对元素进行初始化,元素的值默认为0。
	 布尔类型的数组,每个元素占一个字节。

5.关于数组:
①求长度:数组名.length;
②定位:一某元素在数组或集合中的位置,二某位置上的元素是多少;
③替换
举例:查找某一个元素在数组中的位置,将数组逆序输出。
核心代码如下:

		int[] b= {4,8,6,2,5,9,68};
		//找某一个元素在数组中的位置
		for(int j = 0;j<b.length;j++) {
			if(b[j]==2) {
				System.out.println(j);
			}
		}
		//将数组逆序输出
		for(int k=0;k<b.length/2;k++) {
			int tmp=b[k];  //设置临时变量
			b[k]=b[b.length-k-1];
			b[b.length-k-1]=tmp;
		}
		//ForEach 循环:遍历数组
		for(int t:b){
			System.out.print(t+" ");
		}

运行结果如下:
在这里插入图片描述
举例:将一个数组按照升序排列方式输出
①直接排序

package com.yanan.test;

public class Sort {
	public static void main(String[] args) {
		int[] a = { 45, 89, 42, 11, 111, 23, 453, 321, 7, 4, 21, 0, 8, 6, 4, 2, 1 }; // 对数组进行静态初始化
		// 拿到用来比较的数
		for (int i = 0; i < a.length; i++) {
			// 拿到用来与其比较的数组
			for (int j = i + 1; j < a.length; j++) {
				if (a[i] > a[j]) {
					int tmp = a[i];
					a[i] = a[j];
					a[j] = tmp;
				}

			}
		}
		for (int t : a) {
			System.out.println(t);
		}
	}
}

运行结果如下:
在这里插入图片描述
②选择排序

package com.yanan.test;

public class XuanZeSort {
	public static void main(String[] args) {
		int[] a = { 45, 89, 42, 11, 111, 23, 453, 321, 7, 4, 21, 0, 8, 6, 4, 2, 1 };
		for (int i = 0; i < a.length; i++) {
			int minindex = i;
			int min = a[i];
			for (int j = i + 1; j < a.length; j++) {
				if (min > a[j]) {
					minindex = j;
					min = a[j];
				}
			}
			int tmp = a[i];
				a[i] = a[minindex];
				a[minindex] = tmp
		}
		for (int t : a) {
				System.out.print(t + " ");
			}
	}
}

注意:①选择排序中每一轮最多调换一次,最少0次,比较次数是数组大小;
     ② 直接排序效率不如选择排序效率高。

运行结果如下:
在这里插入图片描述
③冒泡排序

package com.yanan.test;

public class MaoPaoSort {
	public static void main(String[] args) {
		int[] a = { 45, 2, 1, 90, 666, 5, 43, 6, 5, 32, 5, 67, 32, 11, 45, 56 };
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a.length - 1 - i; j++) {
				if (a[j] > a[j + 1]) {
					int tmp = a[j];
					a[j] = a[j + 1];
					a[j + 1] = tmp;
				}
			}
		}
		for (int t : a) {
			System.out.println(t);
		}
	}
}

运行结果如下:
在这里插入图片描述
④使用操作Java的工具Arrays。

package com.yanan.test;

import java.util.Arrays;

public class ShengJiangSort {
	public static void main(String[] args) {
		int[] a = { 45, 2, 1, 90, 666, 5, 43, 6, 5, 32, 5, 67, 32, 11, 45, 56 };
	 	Arrays.sort(a); //升序输出,Arrays专门操作java的工具
		// 遍历数组
		for (int t : a) {
			System.out.println(t);
		}
	}
}

运行结果如下:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值