Сортировка массива по парных и непарных индексах - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, господа. Запарился я тут с одной задачкой, буду рад, если кто поможет ибо в темах и FAQ я такого не нашёл. Задача состоит в том, чтобы преобразовать массив таким образом, чтобы в первой його половине располагались элементы, которые стояли в непарных позициях, а во второй половине - элементи, которые стояли в парных позициях. Так вот, мало того, что вывод не пашет внутри сортировки, так ещё и сама сортировка не пашет (проверено на выводе массива другим методом).
public void Sort()
        {
            for(int o = 0; o < n / 2; o++)
            {
                for (int i = 0; i < n; i++)
                {
                    if (i % 2 != 0)
                    {
                        b[o] = a[i];
                        Console.Write(b[o] + "\t");
                    }
                    else
                    {
                        for(int e = n / 2; e < n; e++)
                        {
                            b[e] = a[i];
                            Console.Write(b[e] + "\t");
                        }
                    }
                    break;
                } 
            }
        }
Консоль во вложениях. Красным подчёркнута неработающая сортировка. Прошу указать на ошибки в этом коде и по возможности предложить более эффективный метод сортировки. Спасибо.

Решение задачи: «Сортировка массива по парных и непарных индексах»

textual
Листинг программы
using System;
using System.Collections.Generic;
 
class Program
{
   static void Main(string[] Args)
   {
      Int32[] A = new Int32[5] { 0, 45, 12, 0, 999 };
      Int32[] B = new Int32[A.Length];
 
      String firstHalf = "";
      String secondHalf = "";
 
      for (Int32 i = 0; i < A.Length; i++)
      {
         if (i % 2 == 0)
         {
            firstHalf += A[i] + " ";
         }
         else
         {
            secondHalf += A[i] + " ";
         }
      }
      firstHalf = firstHalf.Substring(0, firstHalf.Length - 1);
      secondHalf = secondHalf.Substring(0, secondHalf.Length - 1);
      String[] fH = firstHalf.Split(' ');
      String[] sH = secondHalf.Split(' ');
      Int32[] fHI = new Int32[fH.Length];
      Int32[] sHI = new Int32[sH.Length];
 
      for (Int32 i = 0; i < fHI.Length; i++)
      {
         fHI[i] = Int32.Parse(fH[i]);
      }
      for (Int32 i = 0; i < sHI.Length; i++)
      {
         sHI[i] = Int32.Parse(sH[i]);
      }
 
      // Сортировка массивов
 
      SortArray(fHI);
      SortArray(sHI);
 
      // Запись в массив B
 
      for (Int32 i = 0; i < B.Length; i++)
      {
         if (i < fHI.Length)
         {
            B[i] = fHI[i];
         }
         else
         {
            B[i] = sHI[i - fHI.Length];
         }
      }
 
      ShowContent(A, "A");
      ShowContent(B, "B");
      Console.ReadLine();
   }
 
   static void ShowContent(Int32[] Array, String Name)
   {
      Console.Write(Name);
      for (Int32 i = 0; i < Array.Length; i++)
      {
         Console.Write(" " + Array[i]);
      }
      Console.WriteLine();
   }
 
   static void SortArray(Int32[] Array)
   {
      for (Int32 i = 1; i < Array.Length; i++)
      {
         if (Array[i] < Array[i - 1])
         {
            Int32 temp = Array[i - 1];
            Array[i - 1] = Array[i];
            Array[i] = temp;
         }
      }
   }
}

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


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

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

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