Skip to content

Commit

Permalink
update Merge
Browse files Browse the repository at this point in the history
  • Loading branch information
Hipple committed Mar 5, 2017
1 parent ec776c2 commit 211f280
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 42 deletions.
66 changes: 25 additions & 41 deletions group18/1159828430/20170226/src/com/coding/array/ArrayUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,49 +65,33 @@ public static int[] removeZero(int[] oldArray){
*/

public static int[] merge(int[] array1, int[] array2){
int[] newArray= new int[array1.length + array2.length];
System.arraycopy(array1, 0, newArray, 0, array1.length);
System.arraycopy(array2, 0, newArray, array1.length, array2.length);

//Arrays.sort(newArray);//快速排序

//冒泡排序
/*for(int i=0;i<newArray.length-1;i++){
for(int j= i + 1; j < newArray.length; j++){
if (newArray[i] > newArray[j]){
int temp = newArray[i];
newArray[i] = newArray[j];
newArray[j] = temp;
}
}
}*/

//选择排序
/*for (int i = 0; i < newArray.length - 1; i++) {
int min = i;
for (int j = i + 1; j < newArray.length; j++) {
if (newArray[min] > newArray[j]) {
min = j;
}
}
if (min != i) {
int temp = newArray[i];
newArray[i] = newArray[min];
newArray[min] = temp;
}
}*/

//插入排序
for (int i = 1; i < newArray.length; i++) {
for (int j = i; j > 0; j--) {
if (newArray[j] < newArray[j - 1]) {
int temp = newArray[j - 1];
newArray[j - 1] = newArray[j];
newArray[j] = temp;
} else
break;
int lena = array1.length;
int lenb = array2.length;
int[] newArray = new int[lena + lenb];
int i = 0, j = 0, k = 0;// 分别代表数组a ,b , c 的索引

while (i < array1.length && j < array2.length)
if (array1[i] <= array2[j]) {
if (k == 0 || newArray[k - 1] != array1[i]) // 去重复
newArray[k++] = array1[i];
i++;
} else {
if (k == 0 || newArray[k - 1] != array2[j]) // 去重复
newArray[k++] = array2[j];
j++;
}

while (i < array1.length) {
if (k == 0 || newArray[k - 1] != array1[i]) // 去重复
newArray[k++] = array1[i];
i++;
}
while (j < array2.length) {
if (k == 0 || newArray[k - 1] != array2[j]) // 去重复
newArray[k++] = array2[j];
j++;
}
newArray = removeZero(newArray);
return newArray;
}
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ public void testMerge() {
int[] a1 = {3,5,7,8};
int[] a2 = {4, 5, 6,7};
int[] newArr = ArrayUtil.merge(a1, a2);
Arrays.stream(newArr).forEach(i -> System.out.println(i));
int[] resultArr = {3,4,5,6,7,8};
assertArrayEquals(resultArr, newArr);
}

@Test
Expand Down

0 comments on commit 211f280

Please sign in to comment.