算法的考查:数组的复制、反转、查找(线性查找)
题目描述:
算法的考查:数组的复制、反转、查找(线性查找)
解题思路:
1.复制(与数组变量的赋值区分开):
需要新建一个数组(长度与原数组相同),然后遍历并对新数组中的元素挨个赋值;
2.数组的反转 (注意:是将原数组反转,而不是新建一个数组)
引入临时变量temp
即可,这是基本操作,不过for循环里i的范围要注意对应,索引是从0开始的
3.查找(线性查找):查找的方法很多,这里讲最笨的线性查找
对数组进行遍历,然后判断是否相等,有两种方法,见程序
本题Java代码:
import java.util.Arrays;
/*
* 算法的考查:数组的复制、反转、查找(线性查找、二分法查找)
*
*/
public class ArrayTest2 {
public static void main(String[] args) {
String[] arr = new String[] {"hyj", "hxc", "hdh", "wt", "wtl", "yhp"};
//1.数组的复制(区别于数组变量的赋值:arr1 = arr)
String[] arr1 = new String[arr.length];
for(int i = 0;i < arr1.length;i++){
arr1[i] = arr[i];
}
System.out.println();
//2.数组的反转 (注意:是将原数组反转,而不是新建一个数组)
String temp;
for(int i = 0;i <= arr1.length/2-1;i++){
temp = arr1[i];
arr1[i] = arr1[arr1.length-1-i];
arr1[arr1.length-1-i] = temp;
}
System.out.println(Arrays.toString(arr1)); //将数组输出,也可使用遍历
//3.查找(或搜索)
//线性查找:
//线性查找-方法一:
String dest = "hxc";
boolean isFlag = true; //用作标识,只有没找到才会输出
for(int i = 0;i < arr.length;i++){
if(dest.equals(arr[i])){
System.out.println("哈哈哈,找到你啦,位置为:" + i);
isFlag = false;
break;
}
}
if(isFlag){
System.out.println("很遗憾,没有找到!");
}
System.out.println();
//线性查找-方法二:
String dest1 = "hx";
for ( int i = 0; i < arr.length; i++) {
if (dest1.equals(arr[i])) {
System.out.print("哈哈哈哈哈哈,找到你啦,位置为:" + i);
break;
}
if (i == arr.length-1) { //这里length需要减1
System.out.print("很遗憾,没有找到!");
}
}
System.out.println();
}
}