Java基础-一维数组

一维数组

一、数组的定义和使用

1.数组的定义
数组是一个变量,存储相同数据类型的一组数据。
数组的基本要素:
(1)标识符:数组的名称,用于区分不同的数组。
(2)数组元素:向数组中存放的数据。
(3)元素下标:对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问。
(4)元素类型:数组元素的数据类型。
数组注意的地方:
数组长度固定不变,避免数组越界。
数组中的所有元素必须属于相同的数据类型。
2.数组的使用
(1)声明数组

数据类型[] 变量名;//声明数组时不规定数组长度

(2)分配空间

数据类型[] 数组名=new 数组类型[大小];//数组元素根据类型不同,有不同的初始值

(3)数组赋值

//方法一
int[] scores={897976};
int[] scores=new 数据类型[]{89,79,76};//边声明边赋值
//方法二
Scanner sc=new Scannner(System.in);
for(int i=0;i<30;i++){
	scores[i]=sc.nextInt();
}//动态的从键盘录入信息并赋值

(4)处理数据

// 例题:计算5位学生的平均分
int []scores={60,70,80,90,88};
double avg;
int sum=0;
for(i=0;i<scores.length;i++){
	sum+=scores[i];
}
avg=sum/scores.length;

3.数组与内存
在这里插入图片描述

二、数组的基本使用及常用操作

1.数组的基本使用

public static void main(String[] args){
	int[] arr=new int[30];//声明数组
	for(int i=0;i<arr.length;i++){
		arr[i]=(int)(Math.random()*100);//数组遍历随机赋值
	}
	System.out.print("[");
	for(int i=0;i<arr.length;i++){
		if(i==arr.length-1){
			System.out.print(arr[i]+"]");//数组元素下标与最后一个下标相同则输出元素加上]
			break;
		}
		System.out.print(arr[i]+"");
	}
}

2.求数组中的最大值

public static void main(String[] args){
	int[] a=new int[100];
	for(int i=0;i<a.length;i++){
		a[i]=(int)(Math.random()*100);
	}
	System.out.print("[");
	for(int i=0;i<a.length,i++){
		if(i==a.length-1){
			System.out.print(a[i]+"]");
		}else{
			System.out.print(",");
		}
	}
	//最大值
	int max=-1;
	for(int i=0;i<a.length,i++){
		if(a[i]>max){
			max=a[i];
		}
	}
System.out.println("最大值为:"+max);
}

3.在数组中插入数值,并保持降序

public static void main(String[] args){
	int[] a={99,85,82,63,60};
	//第一步:先扩容
	int[] b=new int[a.length-1];
	for(int i=0;i<b.length;i++){
		b[i]=a[i];
	}
	System.out.println(Arrays.toString(b));
	int num=88;//定义插入的数
	boolean isInsert=false;
	//如果找不到比该数大的,则插入首位
	for(int i=b.length-2;i>=0;i++){//从后向前比
		if(b[i]<num){
			b[i+1]=b[i];//比该数小的向后移
		}else{
			isInsert=true;
			b[i+1]=num;//找到比该数大的,则该数在大的后面插入
			break;
		}
	}
	if(!isInsert){
		b[0]=num;//如果找不到比该数大的,则插入首位
	}
	System.out.println(Arrays.toString(b));
}

三、选择排序

选择排序是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

public static void main(String[] args){
	//基本逻辑:外层循环确定一个位置
	//内层循环确定该位置的值(当前最小值)
	int[] a=new int[10];
	for(int i=0;i<a.length;i++){
		a[i]=(int)(Math.random()*100);
	}
	System.out.println(Arrays.toString(a));
	for(int i=0;i<a.length-1;i++){
		int tmp=a[i];//确定位置
		int p=i;
		for(int j=i+1;j<a.length;j++){
			if(tmp>a[j]){
				tmp=a[j];
				p=j;
			}
		}
		a[p]=a[i];
		a[i]=tmp;
	}
	System.out.println(Arrays.toString(a));
}

四、插入排序

插入排序的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

public static void main(String[] args){
	//与基本插入数组的逻辑相同
	//只是在外层循环控制需要插入的数值和位置
	int[] a=new int[10];
	for(int i=0;i<a.length;i++){
		a[i]=(int)(Math.random()*100);
	}
	System.out.println(Arrays.toString(a));
	for(int i=1;i<a.length;i++){
		int tmp=a[i];
		boolean isInsert=false;
		for(int j=i-1;j>=0;j--){
			if(a[j]>tmp){
				a[j+1]=a[j];
			}else{
				isInsert=true;
				a[j+1]=tmp;
				break;
			}
		}
		if(!isInsert){
			a[0]=tmp;
		}
	}
	System.out.println(Arrays.toString(a));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值