一、数组
- 栈内存空间
存放方法中的局部变量
- 堆内存
-
只要new出来的就存在堆内存
-
堆内存里面的东西都有一个地址值
-
堆内存都有默认值
int 默认值为0
String 默认值为null
boolean 默认值为false
- 方法区
存储class相关的信息包含方法的信息
创建数组(三种方式)
-
第一种方式
int[] nums = {1,2,3,4,5};
-
第二种方式
int nums2[] = new int[5]; //容量为5 每个值默认为0
-
第三种方式
int[] nums3 = new int[]{1,2,3,4,5}; // nums2[5] = 5; ArrayIndexOutOfBoundsException 数组下标越界异常
注意:错误方式
int[] nums = new int[5]{1,2,3,4,5}; // 报错。错误写法 注意笔试题!
-
遍历数组
for(int i=0;i<nums.length;i++){ System.out.print(nums[i]+"\t"); } //System.out.println(nums) 输出的是数组的地址值
内存图
- 第一种情况
- 第二种情况
二、排序
冒泡排序
原理:比较相邻的两个元素,将最大的值交换到最右边
思路:依次比较相邻的两个元素。将小的值放到左边,将大的值交换到最右边。
public class Test004 {
public static void main(String[] args) {
/*
int[] nums = new int[]{4,1,8,3,9,5};
for (int i=nums.length-1;i>0;i--){
for (int j=0;j<i;j++){
if (nums[j]>nums[j+1]){
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}*/
int[] nums = new int[]{1,4,6,8,9};
for (int i=nums.length-1;i>0;i--){
//假设都是排好的
boolean flag = true;
for (int j=0;j<i;j++){
if (nums[j]>nums[j+1]){
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
flag = false;//只要进去就设置为false
}
}
if (flag){
break;
}
}
for (int i=0;i<nums.length;i++){
System.out.print(nums[i]+"\t");
}
}
}
选择排序
原理:从序列中找到最大的那个元素,然后放到末尾,把原来末尾的元素,放到最大值的位置,即将最大值与末尾值交换位置(或者找到最小的元素,然后放在第一个数字,把第一个数字放在最小值的位置,即将最小值与首值交换位置)
忽略:曾找到最大元素(曾找到最小元素)
//选择排序
// 选择最小元素与第一个元素交换位置
public class SelectSort {
public static void main(String[] args) {
int[] array = new int[]{9,4,6,1,7,5,3};
int minIndex=0 ;
for (int i=0;i<array.length;i++){
minIndex = i;
for (int j=i;j<array.length;j++){ //寻找最小元素下标
if (array[j]<array[minIndex]){
minIndex = j;
}
}
int temp = array[minIndex];
array[minIndex] = array[i];
array[i] = temp;
System.out.println("\n");
for (int k=0;k<array.length;k++){
System.out.print(array[k]+"\t");
}
}
for (int i=0;i<array.length;i++){
System.out.print(array[i]+"\t");
}
}
}
快速排序
Arrays.sort(nums);//是快速排序和优化的归并排序
package zengstudy.day10;
import java.util.Arrays;
public class Test002 {
public static void main(String[] args) {
int nums[] = {2,5,1,9,6};
for (int i=0;i<nums.length;i++){
System.out.print(nums[i]+"\t");
}
System.out.println("\n");
//排序
Arrays.sort(nums);//快速排序和优化的归并排序
for (int i=0;i<nums.length;i++){
System.out.print(nums[i]+"\t");
}
}
}