Быстрая сортировка нечетных элементов - C#
Формулировка задачи:
Есть метод обычной быстрой сортировки, но нужно, чтобы сортировались только нечетные (по расположению) элементы, т.е элементы с четным индексом. По заданию нужно использовать только быструю сортировку. Несколько часов уже не могу ничего придумать.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication11 { class Program { static void QSort(int[] M, int LG, int PG) { int i = LG, j = PG, T; double X = M[((LG + PG) / 2)]; while (i <= j) { while (M[i] < X) i += 1; while (M[j] > X) j -= 1; if (i <= j) { T = M[i]; M[i] = M[j]; M[j] = T; i += 1; j -= 1; } } if (LG < j) QSort(M, LG, j); if (i < PG) QSort(M, i, PG); } static void Main(string[] args) { const int k = 9; int[] M = new int[k]; Random rand = new Random(); for (int i = 0; i < k; i++) { M[i] = rand.Next(-9, 9); } Console.WriteLine("Вывод исходного массива"); for (int i = 0; i < M.Length; i++) { Console.Write(M[i] + " "); } Console.WriteLine(); QSort(M, 0, M.Length - 1); Console.WriteLine("\n\nВывод отсортированного массива"); for (int i = 0; i < M.Length; i++) { Console.Write(M[i] + " "); } } } }
Решение задачи: «Быстрая сортировка нечетных элементов»
textual
Листинг программы
using System; using System.Linq; using System.Collections.Generic; class Program { private static IEnumerable<int> QuickSort(IEnumerable<int> en) { int count = en.Count(); if (count < 2) return en; int fst = en.First(); if (count == 2) return fst > en.Last() ? en.Reverse() : en; ILookup<int, int> lookup = en.ToLookup(x => x.CompareTo(fst)); return QuickSort(lookup[-1]).Concat(lookup[0]).Concat(QuickSort(lookup[1])); } public static void Main() { int[] arr = Enumerable.Repeat(new Random(), 20).Select(r => r.Next(100)).ToArray(); Console.WriteLine(String.Join(", ", arr)); Queue<int> que = new Queue<int>(QuickSort(arr.Where((_, i) => i % 2 == 0))); for (int i = 0; i < arr.Length; i += 2) { arr[i] = que.Dequeue(); } Console.WriteLine(String.Join(", ", arr)); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д