1. 运行代码
package com.tansuowu.java;
/*
* 算法的考察:数组的复制,反转,查找(线性查找,二分法查找)
*
*/
public class ArrayTest2 {
public static void main(String[] args) {
String[] arr = new String[] { "JJ", "DD", "BB", "GG", "AA", "MM" };
// 遍历
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
// 数组的复制(区别于数组变量的赋值:arr1=arr;)
String[] arr1 = new String[arr.length];
for (int i = 0; i < arr1.length; i++) {
arr1[i] = arr[i];
}
// 数组的反转
// 方法一:
// for(int i = 0;i<arr.length/2;i++){
// String temp=arr[i];
// arr[i]=arr[arr.length-i-1];
// arr[arr.length-i-1]=temp;
// }
// 方法二
// for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
// String temp = arr[i];
// arr[i] = arr[j];
// arr[j] = temp;
// }
// 遍历
System.out.println("所查找的数组为:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
// 查找(搜索)
// 线性查找:
String dest = "BB";
int z = 0;
boolean isFlag = true;
for (int i = 0; i < arr.length; i++) {
if (dest.equals(arr[i])) {
z = i + 1;
System.out.println();
System.out.println(" 找到了指定元素位置,位置为:第" + z + "个元素");
isFlag = false;
break;
}
}
if (isFlag) {
System.out.println("很遗憾,没有找到哦");
}
// 二分查找
// 前提:所要查找的数组必须有序。
int[] arr2 = new int[] { -65, -34, 2, 34, 54, 66, 79, 105, 210, 983 };
int dest1 = 2;
int head = 0;// 初始索引
int end = arr2.length - 1;// 初始的末索引
boolean isFlag1 = true;
int s = 0;
System.out.println("所查找的数组为:");
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i] + " ");
}
System.out.println();
while (head <= end) {
int middle = (head + end) / 2;
if (dest1 == arr2[middle]) {
s = middle + 1;
System.out.println(" 找到了指定元素位置,位置为:" + s + "个元素");
isFlag1 = false;
break;
} else if (arr2[middle] > dest1) {
end = middle - 1;
} else {// (arr2[middle]<dest1)
head = middle + 1;
}
}
if (isFlag1) {
System.out.println("很遗憾,没有找到哦");
}
}
}
2.运行结果