java笔试考题
1、java 合并两个有序数组
package base;
/**
* 方式一
* java 合并两个有序数组
*/
public class MergeTwoArray {
public static void main(String[] args) {
int[] arrayA = {100,200,201,334};
int[] arrayB = {101,104,106,233,455,772};
int[] arrayC = new int[arrayA.length + arrayB.length];
merge(arrayA,arrayA.length,arrayB,arrayB.length,arrayC);
disPlay(arrayC);
}
public static void merge(int[] arrayA, int sizeA, int[] arrayB, int sizeB,int[] arrryC) {
int aIndex = 0, bIndex = 0,cIndex = 0;
while (aIndex < sizeA && bIndex < sizeB) {
if(arrayA[aIndex] < arrayB[bIndex]) {
arrryC[cIndex ++] = arrayA[aIndex++];
} else {
arrryC[cIndex ++] = arrayB[bIndex++];
}
}
while (aIndex < sizeA) {
arrryC[cIndex ++] = arrayA[aIndex++];
}
while (bIndex < sizeB) {
arrryC[cIndex ++] = arrayB[bIndex ++];
}
}
public static void disPlay(int[] arryx) {
for(int i = 0; i < arryx.length; i ++) {
System.out.print(arryx[i] + " ");
}
System.out.println();
}
}
/**
* 方式二
* java 合并两个有序数组
*/
class Untitled {
public static void main(String[] args) {
System.out.println("hello https://tool.lu/");
int[] a = new int[]{1,2,3,4,5};
int[] b = new int[]{6,7,8,9};
for(int i : a){
System.out.println(i);
}
//方式一
//数组合并
int[] arr = addd(a,b);
//冒泡排序
for (int i = 0; i < arr.length; i++) {
//外层循环,遍历次数
for (int j = 0; j < arr.length - i - 1; j++) {
//内层循环,升序(如果前一个值比后一个值大,则交换)
//内层循环一次,获取一个最大值
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
for(int r : arr){
System.out.println(r);
}
//方式二
//直接比较插入排序
merg(a, b);
}
//数组合并
public static int[] addd(int[] m, int[] n) {
int[] s = new int[m.length+n.length];
for(int k=0;k
}
for(int l=0;l
}
return s;
}
//直接比较插入排序
public static void merg(int[] ms1, int[] ms2) {
int i = ms1.length-1;
int j = ms2.length-1;
int k = ms1.length+ms2.length-1;
int[] re = new int[k+1];
while(i>=0 && j>=0){
re[k--] = ms1[i] > ms2[j] ? ms1[i--] : ms2[j--];
}
while(i>=0){
re[k--] = ms1[i--];
}
while(j>=0){
re[k--] = ms2[j--];
}
for(int r : re){
System.out.println(r);
}
}
}