Одномерные массивы: сортировка слиянием и поиск линейным алгоритмом - C#
Формулировка задачи:
Задание такое: создать 2 одномерных массива (по 15000 элементов в каждом), после чего отсортировать его его методом слияния. Потом запихать отсортированные массивы в 3-ий массив. И с помощью линейного алгоритма, найти элементы, присутствующие в обоих массивах.
Эм, я уже отчаялся, что я только не пробовал - не выходит. Помогите кто чем сможет, буду очень признателен.
Решение задачи: «Одномерные массивы: сортировка слиянием и поиск линейным алгоритмом»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _1_laba
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
int[] A = Createmass(16, 0, 10, rnd);
int[] B = Createmass(16, 0, 10, rnd);
printMass(A);
printMass(B);
int[]F=AandB(A,B);
// printMass(F);
int[] G = F.Distinct().ToArray();
printMass(G);
Console.ReadKey();
}
public static int[] Createmass(int lan, int min, int max, Random rnd)
{
int[] work = new int[lan];
for (int i = 0; i < lan; i++)
{
work[i] = rnd.Next(min, max);
}
return work;
}
//-----------------------печать массива
public static void printMass(int[] W)
{
for (int i = 0; i < W.Length; i++)
{
Console.Write("{0}", W[i]);
}
Console.WriteLine();
}
public static int[] AandB(int[] C, int[] D)
{
int [] V = new int[C.Length];
int K = 0;
for (int i = 0; i < (int)(D.Length / 2); i++)
{
for (int j = 0; j < C.Length; j++)
{
if (D[i] == C[j])
{
V[K] = C[j];
K++;
}
}
}
//слияние 2 часть
int[] V_1 = new int[C.Length];
int K_1 = 0;
for (int i = (int)(D.Length / 2); i < D.Length; i++)
{
for (int j = 0; j < C.Length; j++)
{
if (D[i] == C[j])
{
V_1[K_1] = C[j];
K_1++;
}
}
}
//---
int[] O = new int[K + K_1];
for (int i = 0; i < K; i++)
{
O[i] =V[i] ;
}
int p = 0;
for (int i = K; i < O.Length; i++)
{
O[i] = V_1[p];
p++;
}
return O;
}
}
}