Java基础功---数组的使用和算法
目录
数组
默认初始化值
数组在内存中的存储
一维数组在内存的存储
二维数组在内存中的存储
数组算法
冒泡排序
选择排序
二分查找
数组
默认初始化值
char:虽然是字符型,但是初始化值为数值0('\u0000'),不是字符'0'
boolean:false
引用数据类型:null
int:0
float,double:0.0
数组在内存中的存储
虚拟机栈:存储正在执行的Java方法的局部变量表
堆:引用数据类型的对象,用new的都在这
方法去:被虚拟机加载类的信息,常量,静态方法,即时编译后的代码
程序计数器:每个线程下一条指令的地址
一维数组在内存的存储
public static void main(String[] args) {int[] arr1=new int[4];arr1[0]=0;arr1[1]=1;String [] strings=new String[4];strings[0]="Tom";strings[1]="张三";}
初始化时候要确定好"容量",然后赋值为默认数据类型
| main() arr1:0Xaabb arr2:0Xacbc | 0Xaabb
0Xacbc
| ||||||||
| 栈 | 堆 |
二维数组在内存中的存储
public static void main(String[] args) {int[][] arr1=new int[4][4];arr1[0][0]=0;arr1[0][1]=1;String [][] strings=new String[4][];strings[0]=new String[4];strings[0][1]="张三";}
两种情况:
1;动态初始化1:int [ ] [ ] arr=new int [3][4];
外层默认存储地址
内层存储一个一维数组
2:动态初始化2:int [ ] [ ] arr=new int [3][ ];
未曾元素为null,指针无指向
内层调用时产生空指针异常(nullPointerException)
| main()
arr2:0Xacaa | 0Xmnss:
0x1234:
| ||||||||||||||||
| 栈 | 堆 |
数组算法
冒泡排序:
从第一个元素开始,把元素1,2比较,较大的放到2的位置;2,3比较,较大的放到3.....最后一个元素就是最大的元素,然后循环,将剩下的数组继续进行冒泡
public class Java07数组_maopaopaixv {public static void main(String[] args) {int[] num={1,3,5,2,4};for (int j=0;j< num.length;j++){for (int i=0;i< num.length-j-1;i++){if (num[i]>num[i+1]){int temp=num[i];num[i]=num[i+1];num[i+1]=temp;}}}for (int i=0;i< num.length;i++) {System.out.println(num[i]);}}
}
选择排序:
标记最大的元素为第一个元素,将他与后面的元素进行比较,后面的更大就赋值更新MAX,到最后再与最后一个位置的元素交换位置,只需要进行最后一次交换
public class Java07数组_xvanzepaixv {public static void main(String[] args) {int[] num={1,3,5,2,4};for (int j=0;j< num.length;j++) {int max = 0;for (int i = 0; i < num.length-j; i++) {if (num[max] < num[i]) max = i;}int temp = num[num.length-1-j];num[num.length-1-j] = num[max];num[max] = temp;}for (int i=0;i< num.length;i++) {System.out.println(num[i]);}}
}
二分查找:
用于已经排好顺序的数组,找到数组中间的数字,与待查找数组比较大小,小于待查找数字说明在后一半,大于说明在前一半,等于即找到,如果标记的star和end相遇则说明数组里没有要找的元素
public class Java07数组_erfenchahzao {public static void main(String[] args) {int[] num={1,2,3,4,5,6,7,8,9};int a=8;//待查找元素int star=0,end= num.length-1,mid=(star+end)/2;//待查找部分数组的开始位次、结束位次、中间while(true){if (num[mid]>a){end=mid;mid=(star+end)/2;}if (num[mid]
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
