数组是相同数据类型的数据按顺序组成的一组引用数据;
一维数组:int [] name ;二维数组:int [] [] name ;
实例化数组:两种方法----------
1:指定数组长度;
int [] name;
name= new int [4];
int [] [] name;
name=new int [ 2] [3];
2:穷举法;
int [] name={1,2,3,4,5,6};
int [] [] name={{1,2,3},{4,5,6},{7,8,9}};对称型
int [] [] name={{1,2},{4,5,6},{7,8,9,10}};非对称型
使用穷举法时,数组名前必须有声明代码。
遍历:
for(int i=0;i
加强循环遍历二维数组
for(int [] name:names){
for(int i:name){
System.out.println(i);
}
}
冒泡排序法:
public class ArraySort{
public static void main(String [] args){
int [] array={21, 99, 3, 1024, 16};//升序排列
for(int loopTime=1;loopTimenextData){//如果当前元素大于其后面的元素,则意味着需要调换两个元素之间的位置
array[i] = nextData;
array[i+1]=currentData;
}
}
}
for(int data:array){
System.out.print(data+" ");
}
}
插入法排序:
public class ArraySort{
public static void main(String [] args){
int [] array={1,2,6,7,2,9,12,2};//升序排列
for(int i=1;ij;k--){//int k=i:待插入数据所在位置就是元素后移开始的下标位置;k>j:待插入数据“应该”插入位置(j)就是元素后移结束位置
array[k]=array[k-1];//元素后置
}
/*
*下面代码用于将待插入数据插入到“应该”插入的下标位置
*/
array[j]=willSortData;
}//该循环体每循环完一次就代表着本次待插入数据已经和前面元素是有序的了
for(int data:array){
System.out.print(data+" ");
}
}
二分法查找:
import java.util.Arrays;
public class Test {
public static int search(int[] array, int data) {
Arrays.sort(array);// 将数组升序排列
int low = 0;
int high = array.length - 1;
while (low <= high) {
int middle = (low + high) / 2;
// 搜索数据与中间元素比较确定在中间元素左边还是右边,进而不断缩小查找范围
if (data > array[middle]) {//右边
low = middle + 1;
} else if (data < array[middle]) {//左边
high = middle - 1;
} else {
return middle;
}
}
return -1;
}
public static void main(String[] args) {
int[] numbers = {5, 1, 7, 3, 2};
int index = search(numbers, 5);
if (index != -1) {
System.out.println("数组中包含该数据");
} else {
System.out.println("数组中不包含该数据");
}
}
}