首先我们创建一个int型数组,然后依次进行以下操作:
int[] arr=new int[] {23,45,3,-4,-76,44,12,0};
1.数组复制
数组复制就是再创建一个数组,大小和数组元素都跟原来的数组一样,切记,不能直接arr1=arr这样,因为这样只是将数组的指针赋给了arr1,本质上还是同一个数组。
//1.数组复制
System.out.println("-----------------数组复制---------------");
int[] arr1=new int[arr.length];
for(int i=0;i<arr.length;i++) {
arr1[i]=arr[i];
}
System.out.print("arr1="+"\t");
for(int i=0;i<arr1.length;i++) {
System.out.print(arr1[i]+"\t");
}
System.out.println();
运行结果:
-----------------数组复制---------------
arr1= 23 45 3 -4 -76 44
2.数组反转
数组反转就是将数组里的元素反向排列。
//2.数组反转
System.out.println("-----------------数组反转---------------");
for(int i=0;i<arr.length/2;i++) {
int temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
System.out.print("arr="+"\t");
for(int i=0;i<arr1.length;i++) {
System.out.print(arr[i]+"\t");
}
System.out.println();
运行结果:
-----------------数组反转---------------
arr= 0 12 44 -76 -4 3 45 23
3.冒泡排序
System.out.println("-----------------冒泡排序---------------");
for(int i=0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-1-i;j++) {
if(arr[j]>arr[j+1]) {
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.print("arr="+"\t");
for(int i=0;i<arr1.length;i++) {
System.out.print(arr[i]+"\t");
}
System.out.println();
运行结果:
-----------------冒泡排序---------------
arr= -76 -4 0 3 12 23 44 45
4.线性查找
//线性查找
System.out.println("-----------------线性查找---------------");
Scanner scan=new Scanner(System.in);
System.out.println("请输入你要查找的数:");
int dest=scan.nextInt();
boolean flag=true;
for(int i=0;i<arr.length;i++) {
if(dest==arr[i]) {
System.out.println("找到了你要查找的数,再数组中的位置是:"+(i+1));
flag=false;
break;
}
}
if(flag) {
System.out.println("很遗憾,没找到!");
}
运行结果:
-----------------线性查找---------------
请输入你要查找的数:
12
找到了你要查找的数,再数组中的位置是:5
5.补充:
- 快速排序时间复杂度:O(nlogn)
- 冒泡排序时间复杂度:O(n^2)
- ArrayIndexOutOfBoundsExceptin:数组角标越界异常。数组角标(索引值)越过了【0,arr.length-1】这个合理范围
- NullPointerException:空指针异常。int【】 arr=null;则arr【0】本身是Null,所以调用会显示空指针异常。