前言
程序=算法+数据结构
算法:解决程序的流程步骤(顺序、分支、循环)
数据结构:将数据按照某种特定的结构来存储
设计良好的数据结构会导致良好的算法。
一、数组结构
数组是最简单的数据结构。
数组:存放同一种类型数据的集合,在内存里面是开辟一块连续的区域。
例如:
int[] array = new int[4];
1、存放整数类型的数组
2、长度是4
3、只能存放int类型
数组的访问:数组名[下标]
二、数组组成
元素类型[] 数组名 = new 元素类型[长度];
例如:
double[] array = new double[4];
数组最重要操作就是遍历。
只要能遍历所有元素:求最大值、最小值、排序。
数组定义的方式:
1、在定义的时候直接赋值
int[] array = {32,5,7,87};
int[] array = new int[]{32,5,7,87};
2、先定义后赋值
int[] array = new int[4];
array[0] = 34;
3、控制台输入时使用scanner
scanner .next()不能读空格
nextline() 可以读空格
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();// "abcba"
System.out.println(str);
三、样例
样例1:冒泡排序
数组的排序:冒泡排序
int[] array = {40, 17, 21, 1}; // 1, 17,21,40
第一轮:40冒到最右边
17,40,21,1
17,21,40,1
17,21,1,40 ------- 40 冒出来
第二轮:21冒出来
17,21,1,40
17,1,21,40 ------- 21冒出来
第三轮:17冒出来
1,17,21,40 ------- 17冒出来
4个数只要比较3轮就可以,剩下那个数不要要排序就是最小的
第一轮:比较3次
第二轮:比较2次
第三轮:比较1次
i+j =4=array.length
j=array.length-i
for循环中
i是几轮
j是下标
//冒泡排序
@Test
public void testBubble() {
int[] array={40,17,21,1};
for (int i = 1; i <=array.length-1 ; i++) {
for (int j = 0; j < array.length-i; j++) {
if (array[j]>array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
注:BigDecimal
// 计算机无法精确的表示小数
@Test
public void test3(){
System.out.println(1.3-1.0);
}//0.30000000000000004
由于IDE无法精确的表示小数所以可以用BigDecimal-----精确计算小数
总结
数组⽤的很少,但是⼀定会⽤,⽽且数组的相关逻辑⽐较麻烦;
把数组的排序和转置要弄明⽩;
⼀切以⼀维数组为主,要明⽩数组定义语法和内存关系(对象⼀致);
对象数组的定义语法。对象数组=多个对象;
数组有⼀个最⼤的天⽣短板;⻓度固定,限制数组的开发中的出现 ;
数组排序:java.util.Arrays.sort(数组名称)。