Ускорение сортировки - C#
Формулировка задачи:
Для решения этой задачи использую быструю сортировку, но при проверке массива из 10^6 элементов время выполнения больше ограничения в 2 секунды. Мб тут нужно использовать другую сортировку?
Задача:
Код стандартный:
Дан массив, элементами которого являются целые числа. Требуется отсортировать его по неубыванию.
Входные данные
Первая строка содержит целое число N (1 ≤ N ≤ 10^6) — количество элементов массива. Вторая строка содержит N целых чисел ai ( - 2^31 ≤ ai < 2^31) — элементы массива.
Выходные данные
Выведите, разделяя пробелами, N целых чисел — элементы массива в порядке неубывания.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace B { class Program { static void quickSort(int[] a, int l, int r) { int temp; int x = a[l + (r-l)/2]; int i = l; int j = r; while (i <= j) { while(a[i] < x) i++; while (a[j] > x) j--; if (i <= j) { temp = a[i]; a[i] = a[j]; a[j] = temp; i++; j--; } } if (i < r) quickSort(a, i, r); if (l < j) quickSort(a, l, j); } static void Main(string[] args) { int n = Convert.ToInt32(Console.ReadLine()); int[] arr = new int[n]; string str = Console.ReadLine(); string[] mas = str.Split(' '); for (int i = 0; i < n; i++) { arr[i] = int.Parse(mas[i]); } quickSort(arr, 0, n - 1); for (int i = 0; i < n; i++) { Console.Write(arr[i]); Console.Write(' '); } } } }
Решение задачи: «Ускорение сортировки»
textual
Листинг программы
for (int i = 0; i < n; i++) { Console.Write(arr[i]); Console.Write(' '); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д