1.内存中的数组
当定义了一个长度为10的数组时,会在内存中开辟一块容量为10的空间,
在这10个空间中分别放好了数值
2.JAVA虚拟机的内存划分
(1)方法区
存储可执行的class文件
JAVA执行先把代码编译为.class文件
调到JAVA虚拟机
(2)堆内存
存放所有使用new关键字创建的
比如数组
(3)栈内存
方法运行时使用的内存,比如main方法的执行
直接输出数组a得到[D@1e643faf,
为在堆内存中的地址值
数组中的数据放在堆内存中,数组变量放在栈内存中.
3.对于一个给定的数组,int[] a={6,3,1,4,7,9,8,10,45,32,15}; 以升序排列
冒泡排序
public class sort {
public static void BubbleSort(int[] arr, int length) {
if (length <= 1) {
return;
}
for (int i = 0; i < length; i++) {
//提前退出点
//做数值判断与数值交换
boolean flag = false;
for (int j = 0; j < length - i - 1; j++) {
if (arr[j ] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag=true;
}
}
if (!flag)break;//没有数据交换,退出
}
}
public static void main(String[] args) {
//对于一个给定的数组,int[] a={6,3,1,4,7,9,8,10,45,32,15};
//以升序或降序排列
//冒泡排序
int[] arr={6,3,1,4,7,9,8,10,45,32,15};
sort.BubbleSort(arr,11);
for (int i : arr) {
System.out.print(i+"\t");
}
}
}
快速排序
public class sort2 {
public static void sort(int[] a,int n){
if (n<=1)return;
for (int i = 1; i <n ; i++) {
int sum=a[i];
int j = i-1;
for (; j >=0 ; j--) {
if (a[j]<sum){
a[j+1]=a[j];
}else break;
}
a[j+1]=sum;
}
}
public static void main(String[] args) {
int[] a={6,3,1,4,7,9,8,10,45,32,15};
sort2.sort(a,11);
for (int value : a) {
System.out.print(value + "\t");
}
}
}