程序 = 算法 + 数据结构
算法:解决问题的思路
数据结构:数据按照一定的结构进行组织存储
合理的数据结构,有助于产出良好的算法
数组
最基本的数据结构,即相同数据类型的元素的集合
//声明数组
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]);
}
- 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]+" ");
}
练习
- 给数组随机赋值,并找出最大值
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);
}
}