Java学习:社区快速通道
数组是相同数据类型的多个数据的容器。
这些元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素。(“简单理解就是:一个跟一个顺序排列”)
int[] a = new int[];
int[] a = {1, 2, 3};
int[] a;
int[] a = new int[]{1, 2, 3};
可以理解为数组中内容的数字序号,从 0 开始 ,对于长度为 n 的数组,下标的范围是 0~n-1。
可以通过下标的方式访问数组中的每一个元素
数组名称.length
使用数组不当, 会出现如下问题:
注意:数组的长度在创建时就固定了。
是因为最小(或最大)的元素会经由交换慢慢“浮”到数列的顶端(降序或升序),就如同水中的气泡最终会上浮到顶端一样,故名“冒泡排序”。
升序:
length - 1
length - i - 1
降序:
length - 1
length - i - 1
private static void sort(int[] numbers) {
for (int i = 0; i < numbers.length - 1; i++) {
for (int j = 0; j < numbers.length - 1 - i; j++) {
if (numbers[j] > numbers[j + 1])
swap(numbers, j, j + 1);
}
}
}
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,二分查找要求数组数据必须采用顺序存储结构有序排列。
假设数组中元素是按升序排列,将数组中间位置的数据与查找数据比较,如果两者相等,则查找成功;否则利用中间位置记录将数组分成前、后两个子数组,如果中间位置数据大于查找数据,则进一步查找前子数组,否则进一步查找后子数组。
重复以上过程,直到找到满足条件的数据,则表示查找成功,直到子数组不存在为止,表示查找不成功。
private static void binarySearch(int[] numbers, int target){
int l = 0;
int r = numbers.length - 1;
while (l < r){
int mid = l + (r - l) / 2;
if (numbers[mid] == target){
System.out.println("排序后,6的索引是:" + mid);
return;
}else if(numbers[mid] > target){
mid = r;
}else {
mid = l;
}
}
}