1.归并算法对两个有序数组的排序速度远大于for循环算法
2.归并算法无法对两个无序数组排序
1 package study03;
2
3 import java.util.Arrays;
4
5 public class Concat {
6
7 //归并算法
8 public int[] concat(int[] arr1, int[] arr2){
9 int index1 = 0;
10 int index2 = 0;
11 int indexTemp = 0;
12 int[] temp = new int[arr1.length+arr2.length];
13 while (index1!=arr1.length&&index2 != arr2.length){
14 if (arr1[index1]<arr2[index2]){
15 temp[indexTemp] = arr1[index1];
16 index1++;
17 }else {
18 temp[indexTemp] = arr2[index2];
19 index2++;
20 }
21 indexTemp++;
22 }
23
24 if (index1!=arr1.length){
25 for (int i = index1; i < arr1.length; i++,index1++,indexTemp++) {
26 temp[indexTemp] = arr1[index1];
27 }
28 }else if (index2 != arr1.length){
29 for (int i = index2; i < arr2.length; i++,index2++,indexTemp++) {
30 temp[indexTemp] = arr2[index2];
31 }
32 }
33 return temp;
34 }
35
36 //循环算法
37 public int[] concat2(int[] arr1, int[] arr2){
38 int[] temp = new int[arr1.length + arr2.length];
39
40 for (int i = 0; i < arr1.length; i++) {
41 temp[i] = arr1[i];
42 }
43
44 for (int i = 0; i < arr2.length; i++) {
45 temp[arr1.length+i] = arr2[i];
46 }
47 for (int i = 0; i < temp.length-1; i++) {
48 for (int j = 0; j < temp.length - i - 1; j++) {
49 if (temp[j]>temp[j+1]){
50 int t = temp[j];
51 temp[j] = temp[j+1];
52 temp[j+1] = t;
53 }
54 }
55 }
56 return temp;
57 }
58 }
![]()