Найти значение 3-го по величине элемента - C#
Формулировка задачи:
Помогите, пожалуйста!!! Нужен код C#.
Объявить массив целых чисел и заполнить его случайными значениями. Размер массива 200,диапазон значений 0-100.
При выполнении следует иметь в виду следующее:
1)0 считается положительным числом, если в задании не оговорен какой-то другой его статус;
2)Когда речь идет о какой-то последовательности чисел, имеется в виду последовательность с длиной, большей 1;
3)В тех случаях, когда задание требует выполнения каких-то вычислений, разрешается выполнять их с той точностью, которую обеспечивают операции целочисленной арифметики.
Что нужно сделать?
Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение.
Решение задачи: «Найти значение 3-го по величине элемента»
textual
Листинг программы
//помещает в N-ю позицию последовательности элемент, который мог бы быть в этой позиции, //если бы последовательность была отсортирована. public static void NthElement(T[] a, int n) { NthElement(a, n, 0, a.Length - 1); } private static void NthElement(T[] a, int n, int l, int r) { while (l < r) { int i = Partition(a, l, r); if (n <= i) r = i - 1; if (n >= i) l = i + 1; } } private static int Partition(T[] a, int l, int r) { int m = l + ((r - l) >> 1); Swap(ref a[m], ref a[r - 1]); Med3(a, l, r - 1, r); int i = l - 1; int j = r; T v = a[r - 1]; do { while (a[++i].CompareTo(v) < 0) ; while (v.CompareTo(a[--j]) < 0) ; if (i >= j) break; Swap(ref a[i], ref a[j]); } while (true); Swap(ref a[r-1], ref a[i]); return i; } private static void Swap(ref T a, ref T b) { T t = a; a = b; b = t; } private static void CompareSwap(T[] keys, int a, int b) { if ((a != b) && (keys[a].CompareTo(keys[b])) > 0) { T t = keys[a]; keys[a] = keys[b]; keys[b] = t; } } private static void Med3(T[] a, int l, int m, int r) { CompareSwap(a, l, m); CompareSwap(a, l, r); CompareSwap(a, m, r); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д