Разместить элементы массива так, чтоб сначала шли все числа, большие данного числа, а потом – остальные - C#
Формулировка задачи:
Доброго вечера
Помогите, пожалуйста, код дописать
//Дан массив целых чисел. Не используя нового массива, разместить элементы массива так,
//чтоб сначала шли все числа, большие данного числа, а потом – остальные.
int i, n,x;
Console.WriteLine("Введите число, которое будет минималным для массива");
x = Int32.Parse(Console.ReadLine());
Console.WriteLine("Введите размер массива целых чисел");
n = Int32.Parse(Console.ReadLine());
int[] mas = new int[n];
for (i = 0; i < n; i++)
{
Console.WriteLine("Введите " + i + " элемент массива");
mas[i] = Int32.Parse(Console.ReadLine());
}
Console.WriteLine("Содержимое массива после сортировки: ");
for (i = 0; i < n; i++)
{
if (mas[i] > x)
{
Console.Write("{0} ", mas[i]);
}
}Я написал, чтобы выводились только элементы, большие указанного. А как вывести сначала большие элементы, а потом все остальные ? При этом нельзя новый массив создавать
Решение задачи: «Разместить элементы массива так, чтоб сначала шли все числа, большие данного числа, а потом – остальные»
textual
Листинг программы
int i = 0, j = mas.Length - 1;
while (i < j)
{
if (mas[i] > x) i++;
else if (mas[j] > x)
{
var t = mas[i];
mas[i++] = mas[j];
mas[j] = t;
}
else j--;
}