Java 数组的拷贝 优化冒泡排序 二分查找,神策数据 java 面试题
==========================================================================
示例:数组的四种拷贝方式
1.for 循环拷贝
import java.util.Arrays;
//数组的拷贝 for 循环是浅拷贝
public class Test9 {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7};
int[] array1 = new int[array.length];
for (int i = 0; i < array1.length; i++) {
array1[i] = array[i];
}
System.out.println(Arrays.toString(array));
System.out.println(Arrays.toString(array1));
}
}
2.Arrays.copyOf()方法
import java.util.Arrays;
//数组的拷贝(Arrays.copyOf())
public class Test10 {
public static void main(String[] args) {
int[]array={1,2,3,4,5,6,7};
int[] ret= Arrays.copyOf(array,array.length);
System.out.println(Arrays.toString(array));
System.out.println(Arrays.toString(ret));
}
}
3.System.arraycopy 方法
import java.util.Arrays;
//数组的拷贝(System.arraycopy 方法)
public class Test11 {
public static void main(String[] args) {
int[]array={1,2,3,4,5,6,7};
int[] copy=new int[array.length];
System.arraycopy(array,0,copy
,0,array.length);
//Object src(原来的数组), int srcPos(从原来数组的这个位置开始拷贝)
// Object dest(拷贝后的数组), int destPos(拷贝的数组的开始位置),int length(拷贝的长度));
System.out.println(Arrays.toString(array));
System.out.println(Arrays.toString(copy));
}
}
4. clone 方法
import java.util.Arrays;
//数组的拷贝 clone
public class Test12 {
public static void main(String[] args) {
int[] array={1,2,3,4,5,6,7};
int []ret=array.clone();
System.out.println(Arrays.toString(ret));
System.out.println(Arrays.toString(array));
}
}
=========================================================================
优化冒泡排序就是插入一个 boolean 变量检查是否交换,如果没有交换说明已经有序即退出。
import java.util.Arrays;
//冒泡排序
public class Test8 {
public static void main(String[] args) {
int []array={2,6,8,1,4,3,5,7};
System.out.println(Arrays.toString(array));
bubbleSort(array);
System.out.println(Arrays.toString(array));
}
public static void bubbleSort(int[] array){
int j=array[0];
for(int i=0;i<array.length-1;i++){//走的趟数 比数组长度少一个
boolean flg=false;//默认都是没有序的
for(int k=0;k<array.length-1-i;k++){// 优化(length-1-i)每次比较都会减少 第一趟要比较 4 次 第二趟 3 次,第三趟 2 次,第四趟 1 次
if(array[k]>array[k+1]){
int temp=array[k];
array[k]=array[k+1];
array[k+1]=temp;
flg=true;
评论