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();
}