アルゴリズム検査:コピー、反転、配列の検索(線形検索)
トピックの説明:
アルゴリズムの検討:コピー、反転、配列の検索(線形検索)
問題解決のアイデア:
1。コピー(配列変数の割り当てとは異なります):
新しい配列を作成し(長さは元の配列と同じです)、トラバースして新しい要素の要素に値を割り当てる必要があります配列を1つずつ;
2。配列を逆にし(注:新しい配列を作成する代わりに元の配列を反転することです)、
一時変数を導入しますtemp
。これは基本的な操作ですが、forループのiの範囲は対応している必要があります。 。インデックスは0から始まります。3
。検索(線形検索):検索多くの方法があります。これが最も愚かな線形検索です
配列をトラバースし、それが等しいかどうかを判断します。2つの方法があります。プログラムを参照してください。
この質問の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();
}
}