Другие языки программирования и технологии
Дан массив N<100 целых чисел. Упорядочить элементы по убыванию и вывести те элементы, которые остались на своих места
(Pascal)
arr = [];
arr2 = [];
for (var i = 0; i < 10; i++) {
rand = Math.floor(Math.random()*100);
arr.push(rand);
}
console.log('a ', arr);
a = arr.slice();
n = arr.sort(function (a,b) {
return a - b;
})
n = n.reverse();
for (var i = 0; i < a.length; i++) {
if (a[i] == n[i]) {
arr2.push(arr[i])
}
};
console.log('n ', n)
console.log('3', arr2)
>>>
a
Array(10) [ 41, 60, 44, 13, 0, 4, 34, 44, 1, 66 ]
n
Array(10) [ 66, 60, 44, 44, 41, 34, 13, 4, 1, 0 ]
3
Array(3) [ 60, 44, 1 ]
arr2 = [];
for (var i = 0; i < 10; i++) {
rand = Math.floor(Math.random()*100);
arr.push(rand);
}
console.log('a ', arr);
a = arr.slice();
n = arr.sort(function (a,b) {
return a - b;
})
n = n.reverse();
for (var i = 0; i < a.length; i++) {
if (a[i] == n[i]) {
arr2.push(arr[i])
}
};
console.log('n ', n)
console.log('3', arr2)
>>>
a
Array(10) [ 41, 60, 44, 13, 0, 4, 34, 44, 1, 66 ]
n
Array(10) [ 66, 60, 44, 44, 41, 34, 13, 4, 1, 0 ]
3
Array(3) [ 60, 44, 1 ]
Артём Ходос
это что ещё за такое?
100 элементов - со скоростью сортировки заморачиваться не требуется. Отслеживать перестановку элементов проще всего при сортировке методом простого выбора. Для 100 элементов учёт перемещений проще всего вести с помощью множества.
type index = 0..99;
var
swp: set of index;
arr: array [index] of integer;
n, i, j, k, t: integer;
begin
swp := [];
read(n);
for i := 0 to n - 1 do read(arr[i]);
for i := 0 to n - 2 do begin
k := i;
for j := i + 1 to n - 1 do if arr[j] > arr[k] then k := j;
if k <> i then begin
swp := swp + [i, k];
t := arr[i]; arr[i] := arr[k]; arr[k] := t
end
end;
for i := 0 to n - 1 do if not (i in swp) then write(arr[i], ' ')
end.
type index = 0..99;
var
swp: set of index;
arr: array [index] of integer;
n, i, j, k, t: integer;
begin
swp := [];
read(n);
for i := 0 to n - 1 do read(arr[i]);
for i := 0 to n - 2 do begin
k := i;
for j := i + 1 to n - 1 do if arr[j] > arr[k] then k := j;
if k <> i then begin
swp := swp + [i, k];
t := arr[i]; arr[i] := arr[k]; arr[k] := t
end
end;
for i := 0 to n - 1 do if not (i in swp) then write(arr[i], ' ')
end.
Артём Ходос
а можно было просто выводить те, которые остались на месте
Артём Ходос
если (условие) то переставить
иначе вывести
иначе вывести
решил
1. Создаёте второй массив, который представляет из себя первый, но отсортированный по убыванию.
2. Пробегаете по второму (или первому) массиву и смотрите, стоит ли на месте i в первом массиве то же, что и на месте i на втором
2. Пробегаете по второму (или первому) массиву и смотрите, стоит ли на месте i в первом массиве то же, что и на месте i на втором
Похожие вопросы
- C# Дан массив Х из 50 целых чисел.
- Дан двумерный массив целых чисел. Упорядочить прямую диагональ в порядке убывания.
- дан массив целых чисел F1,F2...Fn. распечатать элементы, нах-ся между min и max и их номера. подскажите где я ошибся
- . Дан массив из N чисел. Поменять местами элементы, равноудаленные от произвольно задаваемого К-го элемента.
- Паскаль.Элементарно,но чё то никак( дан массив.все его элементы разделить на первый элемент.и вывести на экран
- TurboPascal. Дана матрица целых чисел. Возвести её во вторую степень, вывести исходную и полученную матрицы
- 16. Дан массив из 20 элементов. Найти пять «соседних» элементов, сумма значений которых максимальна. ??
- Дан массив из 20 элементов. Найти три «соседних» элементов, сумма значений которых максимальна. как это на СИ сделать?
- Ассемблер. В заданном массиве целых чисел найти самую большую серию подряд стоящих чётных элементов.
- задача в pascale. дан массив. Найти минимальный элемент и отсортировать все элементы стоящие после него.