两个数组合并排序
class Program { static void Main(string[] args) { int[] num1 = new int[] { 3, 5, 6, 7 }; int[] num2 = new int[] { 1, 3, 7, 8 }; int[] result1 = Sort1(num1, num2); int[] result2 = Sort2(num1, num2); int[] result3 = Sort3(num1, num2); } //有序无序数组都可以排列并组合 //1. 先插入到一个数组里面.2. 然后排序 public static int[] Sort1(int[] num1, int[] num2) { int[] num3 = new int[num1.Length + num2.Length]; for (int i = 0; i < num1.Length; i++) { num3[i] = num1[i]; } for (int i = 0; i < num2.Length; i++) { num3[num1.Length + i] = num2[i]; } for (int i = 0; i < num3.Length; i++) { for (int j = i + 1; j < num3.Length; j++) { if (num3[i] > num3[j]) { int num = num3[i]; num3[i] = num3[j]; num3[j] = num; } } } return num3; } //针对有序的两个数组 //1. 两个数组同时比较,进行插入.当其中一个数组插入完毕.跳出循环. //2. 对剩下的一个数组里面的数进行插入. //2. 如果是无序的两个数组,分别排序再合并 public static int[] Sort2(int[] num1, int[] num2) { int[] num3 = new int[num1.Length + num2.Length]; int i = 0; int j = 0; int k = 0; while (i < num1.Length && j < num2.Length) { if (num1[i] < num2[j]) { num3[k++] = num1[i++]; } else if (num1[i] > num2[j]) { num3[k++] = num2[j++]; } else { num3[k++] = num1[i++]; num3[k++] = num2[j++]; } } if (i == num1.Length) { while (j < num2.Length) num3[k++] = num2[j++]; } else if (j == num2.Length) { while (i < num1.Length) num3[k++] = num1[i++]; } return num3; } //List进行操作 //1. 将两个数组的数插入到List中 //2. 去除排序 static int[] Sort3(int[] num1, int[] num2) { List<int> list1 = new List<int>(); for (int i = 0; i < num1.Length; i++) { list1.Add(num1[i]); } for (int i = 0; i < num2.Length; i++) { if (!list1.Contains(num2[i])) { list1.Add(num2[i]); } } list1.Sort(); return list1.ToArray(); }