Сортировка чисел массива в порядке возрастания - C#
Формулировка задачи:
Доброго времени суток всем. Я новичок , написал код для сортировки чисел массива в порядке возрастания , пишет ошибка : бесконечный цикл или рекурсия. Исправьте плз код и скажите что не так.(там вроде рекурсия не бесконечно должна быть ведь поставил условие)
class Program { static void Main() { int[] mas = { 95, 52, 34, 79 , 23, 84 ,98 ,32 ,94 ,41, }; for (int i = 0; i < mas.Length - 1; i++) { int j = i + 1; if (mas[i] > mas[j]) { int t = mas[i]; mas[i] = mas[j]; mas[j] = t; } if (mas[i] < mas[j]) { Program.Main(); } else { for (int p = 0; p < mas.Length; p++) { Console.WriteLine(mas[p]); } Console.ReadLine(); } } } }
Решение задачи: «Сортировка чисел массива в порядке возрастания»
textual
Листинг программы
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); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д