Одномерные массивы: сортировка слиянием и поиск линейным алгоритмом - 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;
        
        }
 
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы