Сортировка массива по парных и непарных индексах - 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;
}
}
}
}