1.数组定义:
1.保存一组相同的数据类型的数据;
2.数组定义格式:
1.数据类型[] 数组名 = 初值;
3.数组的声明方式(共三种)
1. int [] array = new [数组的长度(length)];
2. int [] array = new[] {1,2,3,4,5,6};
3. int [] array = { 1,2,3,4,5}
实例: 1.根据角标查找对应的元素;
2.根据元素查找对应的角标
int [] array = { 2,3,4,6,7}
for(i=0;i<array.length;i++){
if(array[i]==3){
System.out.println(i);
}
}
2.封装一个函数知道数组和一个数组里面的数值;找到这个数值在数组下面对应的index索引值;
public static int findStringToKey(int[] array, int key) {
// 声明一个角标 找相应的数据;
int index = -1;
for (int i = 0; i < array.length; i++) {
if (key == array[i]) {
index = i;
break;
}
}
return index;
};
3.数组反转,将数组倒序排列,封装一个方法;
public static void changnum(int[] array) {
for (int i = 0; i < array.length / 2; i++) {
int temp = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = temp;
}
4 .冒泡排序 核心思想:相邻两个位置比较换位;
外层循环控制一共跑了多少趟; 内层循环控制一趟比了多少次;
内循环减去1防止j+1越界; 外层循环i循环一次都会产生一个最大值或者最小值;这样内层循环j的次数减少一次;
public static void change(int[] array) {
for (int i = 0; i < array.length-1; i++) {
for (int j = 0; j < array.length-1-i; j++) {
if(array[j]<array[j+1]) {
int temp =array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(array));
}
5.选择排序
public static void change(int[]array) {
for (int i = 0; i < array.length-1; i++) {
for (int j =1+i; j < array.length; j++) {
//用第0个和剩下的每一个数比较;
//写出来;
//i=0; j 1 2 3..
//i=1;j ,2,3...
//i=2;j ,3
if(array[i]>array[j]) {
int temp = array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
}
6.折半法(2分法);
public static void find(int[] array, int key) {
int min = 0;
int max = array.length - 1;
int middle = (min + max) / 2;
while (array[middle] != key) {
// 判断 key 和中间角标值
// 来移动最小和最大角标;
if (key > array[middle]) {
min = middle + 1;
}
if (key < array[middle]) {
max = middle - 1;
}
// 每次循环要有折半的操作;
middle = (min + max) / 2;
// 数组中没有这个数的时候;
if (min > max) {
// 没有这个数使用-1表示;
middle = -1;
break;
}
}
System.out.println("改值得坐标是:"+middle);
}
4. 二维数组
1. 如何声明一个二维数组
int [][] array = new int[] []{
{1,2,3}
{3,4,5}
}
2. 遍历二维数组
for (int i = 0; i < array1.length; i++) { //遍历二维数组的每一项一维数组;
for (int j = 0; j < array1[i].length; j++) { //遍历第 i 项一维数组数组的每一项;
System.out.print(array1[i][j]+" ");
}
System.out.println();
}
}
5.关于栈内存和堆内存的一些研究
如上面所示:封装了一个方法:目标是为了让a和b进行位置交换;在调用这个方法以后,输出的a和b并没有发生数值的对调;通过一个图标可以显现出a和b 不互换位置的原因; main函数和change函数同在栈内存的不同区域;