测试数组的复制、反转、查找
public class ArrayTest {
public static void main(String[] args) {
String[] arr1 = new String[] { "AA", "CC", "KK", "MM", "DD", "JJ", "GG", "ZZ" };
// 数组的复制
String[] arr2 = new String[arr1.length];
for (int i = 0; i < arr2.length; i++) {
arr2[i] = arr1[i];
}
// 遍历arr1
System.out.println("遍历arr1:");
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + "\t");
}
// arr1数组的反转
// 方式一:
// for(int i = 0;i < arr1.length / 2;i++){
// String temp = arr1[i];
// arr1[i] = arr1[arr1.length - 1 - i];
// arr1[arr1.length - 1 - i] = temp;
// }
// 方式二:
for (int i = 0, j = arr1.length - 1; i < j; i++, j--) {
String temp = arr1[i];
arr1[i] = arr1[j];
arr1[j] = temp;
}
// 遍历arr1
System.out.println("\n遍历arr1:");
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + "\t");
}
// 查找:
// 线性查找
//方式一:
// String word = "DD";
// int i = 0;
// for (; i < arr1.length; i++) {
//
// if (word.equals(arr1[i])) {
// System.out.println("找到了指定元素,索引为:" + i);
// break;
// }
// }
// if (i == arr1.length) {
// System.out.println("没找到");
// }
//方式二:
String word = "DD";
boolean flag = true;
for (int i = 0;i < arr1.length; i++) {
if (word.equals(arr1[i])) {
System.out.println("找到了指定元素,索引为:" + i);
flag = false;
break;
}
}
if(flag){
System.out.println("没找到");
}
//二分法查找
//使用前提:数组必须有序
int[] arr3 = new int[]{2,3,6,8,10,15,19,21,28,32,38,48,50,77,99,101};
int dest = 2;
int head = 0;//默认的首索引
int end = arr3.length - 1;//默认的尾索引
boolean flag1 = true;
while(head <= end){
int middle = (head + end )/2;
if(arr3[middle] == dest){
System.out.println("找到了指定元素,索引为:" + middle);
flag1 = false;
break;
}else if(arr3[middle] > dest){
end = middle - 1 ;
}else{
head = middle + 1;
}
}
if(flag1){
System.out.println("没找到");
}
}
}