1.算法:二分查找
//二分查找
int [] arr = {1,9,3,7,5};
//升序排序
int temp;
for(int i = 0; i < arr.length - 1; i++) {
for(int j = 0; j < arr.length-1-i; j++) {
if(arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
//排序后
for(int a : arr) {
System.out.print(a + ",");
}
System.out.println();
//查找
//二分查找法:
Scanner superman = new Scanner(System.in);
System.out.println("--输入要查找的数字:");
int num = superman.nextInt();
int start = 0;
int end = arr.length -1;
int mid = (start + end) / 2;
while(start <= end) {
if(num > arr[mid]) {
start = mid + 1;
}else if(num < arr[mid]) {
end = mid -1;
}else {
System.out.println("存在,位置:" + mid);
return;
}
mid = (start + end) / 2;//循环拆
}
System.out.println("不存在,位置:" + (-start-1));
2.复制
int [] arr = {11,22,33,44,55};
//方法一:
int [] arr1 = new int[arr.length];
for(int i = 0; i < arr.length; i++) {
arr1[i] = arr[i];
}
//方法二:
//创建一个新的数组
int [] arr3 = new int[arr.length];
// 要复制的原数组,原数组的起始位置,目标数组,目标数组的起始位置,复制的个数
System.arraycopy(arr, 0, arr3, 0, 5);
//方法三:
int [] arr2 = arr;// arr, arr2是同一个数组对象
//方法四:
int [] arr4 = arr.clone(); // 对象的复制,对象的克隆 (Object类)
3.Arrays的常用方法
使用java.util.Arrays类
常用方法
①toString
②Sort
③binarySearch
④equals
⑤fill
⑥copyOf
equals()原码:
public static boolean equals(int[] a, int[] a2) {
if (a==a2)
return true;
if (a==null || a2==null)
return false;
int length = a.length;
if (a2.length != length)
return false;
for (int i=0; i<length; i++)
if (a[i] != a2[i])
return false;
return true;
}
示例:
// 0 , 1, 2, 3, 4
int [] arr = {111,44,33,22,55};
//1.toString把数组 转换成 字符串----------------------------
String s = Arrays.toString(arr);
System.out.println(s);//String [111, 44, 33, 22, 55]
//2.sort排序(升序排序)--------------------------------
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));//[ 22, 33, 44, 55,111,]
// 要排序的数组,起始位置,终止位置 [起始位置,终止位置)
Arrays.sort( arr, 1, 4);
//ctrl + / 单行注释
System.out.println(Arrays.toString(arr));//[111, 22, 33, 44, 55]
//3.binarySearch二分查找法,前提 升序排序。 返回 元素的下标,不存在返回 -插入点-1
System.out.println(Arrays.binarySearch(arr, 444));//-6
System.out.println(Arrays.binarySearch(arr, 1, 4, 22));//-2
//4.equals两个数组是否相等 : 长度和对应位的元素值相等。相等 true-不相等false-------
int [] a1 = {11,22,33};
int [] a2 = {11,22,33,44};
System.out.println(Arrays.equals(a1, a2));//true
//5.fill填充数组----------------------------------------------
Arrays.fill(arr, 999);
System.out.println(Arrays.toString(arr));//[999, 999, 999, 999, 999]
//6.copyOf复制------------------------------------
int [] a3 = {11,22,33};//数组
int [] a4 = Arrays.copyOf(a3, 5);
System.out.println(a3);
System.out.println(a4);
System.out.println(Arrays.toString(a4));//[11, 22, 33]
4.项目案例:图书管理数组
import java.util.Arrays;
import java.util.Scanner;
public class Demo8 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num=0;
int j = 0;
int [] arr1=new int [100];
String [] arr2=new String [100];
double [] arr3=new double [100];
System.out.println("-图书管理系统1.0版-");
System.out.println("1.添加");
System.out.println("2.修改");
System.out.println("3.删除");
System.out.println("4.查询");
System.out.println("5.推出");
while (num != 5) {
System.out.println("* 输入菜单选择:");
num = input.nextInt();
switch (num) {
case 1://添加
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] == 0) {
j = i;//j把三个类目穿起来
break;
}
}
System.out.println("--输入图书编号:");
arr1 [j] = input.nextInt();
System.out.println("--输入图书名:");
arr2 [j]= input.next();
System.out.println("--输入图书价格:");
arr3 [j] = input.nextDouble();
System.out.println("添加成功!");
break;
case 2://修改
System.out.println("--输入要修改的图书编号:");
int k = input.nextInt();
for(int i = 0;i < arr1.length; i++){
if(arr1[i] == k){
j = i;
break;
}
}
arr1 [j] = input.nextInt();
System.out.println("--输入新的图书价格:");
arr3 [j] = input.nextInt();
System.out.println("修改成功!");
break;
case 3://删除
System.out.print("输入要删除图书编号:");
int m = input.nextInt();
for(int i = 0;i < arr1.length; i++){
if(arr1[i] == m){
j = i;
break;
}
}
for(int i = j+1;i<arr1.length;i++){
arr1[i-1] = arr1[i];
arr2[i-1] = arr2[i];
arr3[i-1] = arr3[i];
}
System.out.println("删除成功");
break;
case 4://查询
System.out.println("图书编号"+"\t"+"图书名称"+"\t"+"图书价格");
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] == 0) {
break;
}
System.out.println(arr1[i]+"\t"+arr2[i]+"\t"+arr3[i]);
}
break;
case 5:
System.exit(0);
}
}
}
}