數(shù)組中涉及的常見算法
-
數(shù)組元素的賦值(楊輝三角赴蝇、回形數(shù)等)
-
求數(shù)值型數(shù)組中元素的最大值、最小值巢掺、平均數(shù)句伶、總和等
-
數(shù)組的復(fù)制、反轉(zhuǎn)陆淀、查找(線性查找考余、二分法查找)
-
數(shù)組元素的排序算法
數(shù)組的復(fù)制、反轉(zhuǎn)轧苫、查找(線性查找楚堤、二分法查找)
public class ArrayTest4 {
public static void main(String[] args) {
String[] arr = new String[]{"jj", "dd", "mm", "bb", "gg", "aa"};
// 數(shù)組的復(fù)制(區(qū)別于數(shù)組變量的賦值)
String[] arr1 = new String[arr.length];
for (int i = 0; i < arr.length; i++) {
arr1[i] = arr[i];
}
for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i] + "\t");
}
// 數(shù)組的反轉(zhuǎn)一
for (int i = 0; i < arr.length; i++) {
String temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - 1 - i ] = temp;
}
// 數(shù)組的反轉(zhuǎn)二
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
// 查找(或搜索)
//線性查找
String dest = "bb";
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("很遺憾含懊,沒有找到偶");
}
// 遍歷
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i] + "\t");
}
// 二分法查找身冬;
// 前提:所要查找的數(shù)組必須是有序
int [] arr2 = new int[]{-98,-89,-43,-12,-1,0,34,89,123,432};
int dest1 = -43;
int head = 0;// 初始的首索引
int end = arr2.length - 1;// 初始的末索引
boolean isFlag1 = true;
while(head <= end){
int middle = (head+end)/2;
if(dest1 == arr2[middle]) {
System.out.println("找到了指定元素,位置為:" + middle);
isFlag1 = false;
break;
}else if(arr2[middle] > dest1){
end = middle-1;
}else if (arr2[middle]< dest1){
head = middle+1;
}
}
if(isFlag1){
System.out.println("很遺憾岔乔,沒有找到");
}
}
}