java编程----数组

程序 = 算法 + 数据结构
算法:解决问题的思路
数据结构:数据按照一定的结构进行组织存储

合理的数据结构,有助于产出良好的算法

数组

最基本的数据结构,即相同数据类型的元素的集合

//声明数组
int[] a;//声明一个int类型的数组,没有分配内存
int[] a = {1,2,3};//此种只能声明的同时赋值
int[] a1 = new int[10];//长度10,只有new分配内存空间
int[] a2 = new int[]{1,2,3};//此时不能指定长度
double[] b;
char[] c;
char c[50];

数组的长度:arr.length
访问数据:arr[0]/arr[1]/arr[2] 下标索引
最后一个元素:arr[arr.length-1] python中arr_list[-1]
注意下标越界异常
 
 
 
循环操作数组

int[] a = new int[10];
//赋值
for(int i=0;i<a.length;i++){
	a[i] = i;
}
//遍历打印
for(int i=0;i<a.length;i++){
	System.out.println(a[i]);
}

数组的复制

System.arraycopy(src, srcPos, dest, destPos, length)
src,源数组
srcPos,起始位置
dest,目标数组
destPos,目标数组的起始位置
length,复制几个
在这里插入图片描述

int[] b = new int[10];//默认值为0
System.arraycopy(a, 0, b, 0, 3);//复制三个,b必须new,仅仅声明不行
		
for(int i=0;i<b.length;i++){
	System.out.println(b[i]);
}
  1. import java.util.Arrays
//创建一个新数组
int[] b = Arrays.copyOf(a,10);//复制a 的10个元素 短截取,长补0
//声明的遍量b 引用数组对象

//数组的长度一旦固定,不可变
//数组的扩容,就是复制到一个更大的数组中

数组的排序

1.插入、冒泡、快排---->自己写
2.import java.util.Arrays
Arrays.sort(arr) 升序排arr本身
3. 实现冒泡排序

/*
思想:
1. n个数,进行n-1轮的冒泡,i控制轮数
2. j控制冒泡,每轮均从0开始-->n-1-i,大的值往后走
3. 遍历打印
*/
//冒泡排序
for(int i=0;i<b.length-1;i++){
	for(int j=0;j<b.length-1-i;j++){
		if(b[j]>b[j+1]){
			//swap
			int temp;
			temp = b[j];
			b[j] = b[j+1];
			b[j+1] = temp;
		}
	}
}

//print b
System.out.println("排序结果:");
for(int i=0;i<b.length;i++){
	System.out.print(b[i]+" ");
}

练习

  1. 给数组随机赋值,并找出最大值
package day01;//
import java.util.Scanner;

public class Dog {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//初始化数组
		int[] a = new int[10];
		//随机赋值数组
		for(int i=0;i<a.length;i++){
			a[i] = (int) (Math.random()*100);//必须括起来
		}
		//找出最大值
		int maxValue = 0;
		for(int i=0;i<a.length;i++){
			System.out.print(a[i]+"  ");
			if(a[i]>maxValue){
				maxValue = a[i];
			}
		}
		System.out.println("最大值:"+maxValue);
	}

}

 
 
 
 
上一篇:java编程----运算符、表达式、分支    下一篇:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laufing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值