一、数组扩容
1.创建一个小数组
2.创建一个大数组(小数组的2倍)
3.遍历小数组,把小数组的值给大数组
4.大数组的引用赋给小数组。
public class ArrayInversion {
public static void main(String[] args) {
//创建一个小数组
int[] array1 = new int[]{1, 5, 3, 4};
//创建大数组
int[] array2 = new int[array1.length * 2];
//遍历将小数组的值赋给大数组
for (int i = 0; i < array1.length; i++) {
array2[i] = array1[i];
}
//将大数组的引用给小数组
array1 = array2;
//遍历打印扩容后的数组
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i]);
}
}
}
2.数组反转
思路:
public class ArrayInversion1 {
public static void main(String[] args) {
//定义反转之前的数组
int[] array = new int[]{1,2,3,4,5,6};
//折半反转
for (int i = 0; i < array.length / 2; i++) {
//最后一个和第一个交换,倒数第二和第二个交换
int temp = array[array.length-1-i];
array[array.length-1-i] = array[i];
array[i] = temp;
}
System.out.println("反转后的数组中的值是");
//打印结果
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
3.排序算法(冒泡排序)
核心:每次两两比较,谁的值大就往后靠
public class BubblingSorting {
public static void main(String[] args) {
int[] array = {31, 65, 95, 34, 64, 75};
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;
}
}
}
//打印
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
4.二分查找
public class BinaryLookup {
public static void main(String[] args) {
int[] nums = {1, 3, 5, 7, 8, 12, 23};
int left = 0;
int right = nums.length - 1;
Scanner scanner = new Scanner(System.in);
System.out.println("输入要查询的值");
int tar = scanner.nextInt();
if (tar < nums[0] || tar > nums[nums.length - 1]) {
System.out.println("输入有误");
} else {
int res = -1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] == tar) {
res = mid;
break;
} else if (nums[mid] > tar) {
right = right - 1;
} else {
left = left + 1;
}
}
System.out.println("您要查询的下标是"+res);
}
}
}