关于归并算法跟循环算法

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 }

posted @ 2021-03-08 11:08  温柔Rarry  阅读(109)  评论(0)    收藏  举报