using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _01_数组
{
internal class Program
{
static void Main(string[] args)
{
// 1. 合并两个数组
int[] list1 = { 1, 2, 3 };
int[] list2 = { 2, 4, 7 };
int[] arr = Connect(list1, list2);
Console.WriteLine(Join(arr));
// 2.数组元素去重
int[] list3 = { 2, 4, 6, 4, 6, 7, 2, 1, 9 };
int[] arr1 = Distinct(list3);
Console.WriteLine(Join(arr1));
// 3.两个数组的交集
int[] list4 = { 3, 5, 7, 2, 5, 3 };
int[] list5 = { 2, 8, 1, 7, 3 };
int[] arr2 = Intersection(list4, list5);
Console.WriteLine(Join(arr2));
Console.ReadLine();
}
static string Join(int[] arr, string link = ",")
{
string str = "";
for (int i = 0; i < arr.Length; i++)
{
str += arr[i];
if (i != arr.Length - 1)
{
str += link;
}
}
return str;
}
/// <summary>
/// 将两个数组连接为一个数组
/// </summary>
/// <param name="arr1">要链接的第一个数组</param>
/// <param name="arr2">要连接的第二个数组</param>
/// <returns>连接后的新数组</returns>
static int[] Connect(int[] arr1, int[] arr2)
{
int[] newArr = new int[arr1.Length + arr2.Length];
for (int i = 0; i < arr1.Length; i++)
{
newArr[i] = arr1[i];
}
for (int i = 0; i < arr2.Length; i++)
{
newArr[arr1.Length + i] = arr2[i];
}
return newArr;
}
/// <summary>
/// 对数组进行去重
/// </summary>
/// <param name="arr">需要去重的数组</param>
/// <returns>去重之后的数组</returns>
static int[] Distinct(int[] arr)
{
// 去重之后的新数组
int[] newArr = { };
for (int i = 0; i < arr.Length; i++)
{
// 获取当前元素第一次出现的位置
int index = FindFirstIndex(arr, arr[i]);
// 判断元素是否是第一次出现
if (index == i)
{
newArr = Add(newArr, arr[i]);
}
}
return newArr;
}
/// <summary>
/// 获取两个数组的交集
/// </summary>
/// <param name="arr">数组1</param>
/// <param name="arr2">数组2</param>
/// <returns>返回交集的数组</returns>
static int[] Intersection(int[] arr1, int[] arr2)
{
int[] MaxArr = arr1.Length > arr2.Length ? arr1 : arr2;
int[] MinArr = arr1.Length < arr2.Length ? arr1 : arr2;
// 存储两个数组中的交集
int[] newArr = { };
for (int i = 0; i < MinArr.Length; i++)
{
// 获取当前元素在大数据中存储的位置
int index = FindFirstIndex(MaxArr, MinArr[i]);
// 判断索引是否存在
if (index != -1)
{
// 如果存在则说明是交集 就存储到新数组中
newArr = Add(newArr, MinArr[i]);
}
}
return newArr;
}
static int FindFirstIndex(int[] arr, int value)
{
int index = -1;// 索引初始值为 -1 表示没有找到相关元素
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] == value)
{
index = i;
break;
}
}
return index;
}
static int[] Remove(int[] arr, int index)
{
if (index >= arr.Length)
{
return arr;
}
int[] newArr = new int[arr.Length - 1];
int count = 0;
for (int i = 0; i < arr.Length; i++)
{
if (i != index)
{
newArr[count++] = arr[i];
}
}
return newArr;
}
static int[] Add(int[] arr, int item)
{
int[] newArr = new int[arr.Length + 1];
for (int i = 0; i < arr.Length; i++)
{
newArr[i] = arr[i];
}
newArr[newArr.Length - 1] = item;
return newArr;
}
}
}
标签:arr,arr1,c#,newArr,int,Length,重和取,数组
From: https://blog.csdn.net/2401_86981975/article/details/143017997