Сортировка чисел массива в порядке возрастания - C#

  1. Доброго времени суток всем. Я новичок , написал код для сортировки чисел массива в порядке возрастания , пишет ошибка : бесконечный цикл или рекурсия. Исправьте плз код и скажите что не так.(там вроде рекурсия не бесконечно должна быть ведь поставил условие)


textual

Код к задаче: «Сортировка чисел массива в порядке возрастания - C#»

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] a = { 1, 3, 5, 4, 2 };
            Array.ForEach(a, Console.WriteLine);
            Console.WriteLine();
            Sort(a);
            Array.ForEach(a, Console.WriteLine);
            Console.ReadKey();          
        }
 
        static void Sort(int[] a)
        {
            qSort(a, 0, a.Length - 1);
        }
 
        private static void qSort(int[] a, int low, int high)
        {
            int i = low;
            int j = high;
            int x = a[(low + high) / 2];  // x - опорный элемент посредине между low и high
            do
            {
                while (a[i] < x) ++i;  // поиск элемента для переноса в старшую часть
                while (a[j] > x) --j;  // поиск элемента для переноса в младшую часть
                if (i <= j)
                {
                    // обмен элементов местами:
                    int temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                    // переход к следующим элементам:
                    i++; j--;
                }
            } while (i < j);
            if (low < j) qSort(a, low, j);
            if (i < high) qSort(a, i, high);
        }
    }
}

СДЕЛАЙТЕ РЕПОСТ

6   голосов, оценка 3.833 из 5



Похожие ответы
  1. Доброе время суток! Помогите мне пожалуйста, вот пытаюсь разобрать быструю сортировку, но никак не могу понять, как мы выбираем опорный элемент особенно не ясно, зачем мы приплюсовываем first, ведь, если мы ищем средний, то достаточно поделить на 2, самое странное, что без него даже прога не хочет работать. В общем, помогите пожалуйста понять

  1. Массив задан датчиком случайных чисел на интервале [-33,66]. Найти наименьший нечетный элемент.

  1. Доброго времени суток! Подскажите почему в строке 19 не верно выполняется последнее в цикле суммирование? Результаты тестирования в принтскрине.

  1. Привет. Есть двумерный массив array = int[4,2]. Заполнен так:

  1. Найти произведение и сумму первых 10 чисел, оканчивающихся на 2.

  1. Составьте программу, которая вводит с клавиатуры одномерный массив из 5 целых чисел и выводит количество ненулевых элементов.

  1. В одномерном массиве есть данные их нужно расположить по возрастанию

  1. Если число x встречается в данной последовательности целых чисел, то упорядочить по неубыванию часть последовательности после первого вхождения x. Не знаю как перезаписать элементы после выбранного числа X, в новый массив. Сортировку сам напишу, подскажите пожалуйста что сейчас не так делаю)

  1. Из последовательности целых чисел вывести в порядке возрастания все числа, стоящие на чётных местах и встречающиеся более двух раз. Я попытался определить элементы встречающиеся в последовательности более двух раз. Но где-то есть ошибка, так как программа выводит только число 22, хотя есть и число 5, встречающееся более двух раз. В то же время записываю в masLenght количество, встречающихся элементов в последовательности более двух раз и элементы стоящие в четных местах. Это для того чтобы создать новый массив с определенным количеством элементов masLenght , и добавить туда эти элементы после чего их отсортировать. Но на сколько я понимаю это очень затяжной и наитупейший подход к решению задачи. Подскажите пожалуйста как все-таки решить задачку, только без применения ArrayList. Ну а если иначе никак, то и с ним можно.