Сортировка массива по парных и непарных индексах - 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; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д