数组:
数组(Array),是多个相同类型数据按一定顺序排列的集合。
创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。
数组的长度一旦确定,就不能修改。
定义并用运算符new为之分配空间后,才可以引用数组中的每个元素。
数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。
二分法查找:
// 二分法查找:要求此数组必须是有序的。
int[] arr3 = new int[] { -99, -54, -2, 0, 2, 33, 43, 256, 999 };
boolean isFlag = true;
int number = 256;
// int number = 25;
int head = 0;// 首索引位置
int end = arr3.length - 1;// 尾索引位置
while (head <= end) {
int middle = (head + end) / 2;
if (arr3[middle] == number) {
System.out.println("找到指定的元素,索引为: " + middle);
isFlag = false;
break;
} else if (arr3[middle] > number) {
end = middle - 1;
} else {// arr3[middle] < number
head = middle + 1;
}
}
if (isFlag) {
System.out.println("未找打指定的元素");
}
Arrays工具类:
java.util.Arrays类即为操作数组的工具类, 包含了用来操作数组(比如排序和搜索)的各种方法。
1 | boolean equals(int[] a,int[] b) | 判断两个数组是否相等。 |
---|---|---|
2 | String toString(int[] a) | 输出数组信息。 |
3 | void fill(int[] a,int val) | 将指定值填充到数组之中。 |
4 | void sort(int[] a) | 对数组进行排序。 |
5 | int binarySearch(int[] a,int key) | 对排序后的数组进行二分法检索指定的值。 |
赋各不相同随机值:
int[] arr = new int[6];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 30) + 1;
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
i--;
break;
}
}
}