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

0->0
0->1
0
0

0Xacbc

null->Tom
null-张三
null
null

二维数组在内存中的存储

    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()


arr1:0Xmnss

arr2:0Xacaa

0Xmnss:
0x1234
0x1285
0x12gh
0x12as

0x1234:

0->00->100
0Xacaa
null->0X69sv
null
null
null
0X69sv
null->Tomnullnullnull

数组算法

冒泡排序:

从第一个元素开始,把元素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]


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部