Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 1

Переместить элемент массива так, чтобы он оказался упорядоченным

29.05.2016, 17:47. Показов 575. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан массив A из N целых чисел. Все его элементы, кроме одного, упорядочены по возрастанию. Переместить значение этого элемента на такую позицию в массиве, чтобы все N элементов оказались упорядоченными по возрастанию. Методы сортировок для всего исходного массива не использовать.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2016, 17:47
Ответы с готовыми решениями:

Переставьте строки и столбцы двумерного массива так, чтобы его минимальный элемент оказался в правом нижнем углу
Помогите пожалуйста с фрагментами программы: 1.Переставьте строки и столбцы двумерного массива так, чтобы его минимальный элемент...

Выполнить кольцевой сдвиг элементов массива так чтобы его первый максимальный элемент оказался на k-том месте
Дан одномерный массив размерность n и число k. Если в исходном массиве чисел больше, чем k, то в массиве выполнить кольцевой сдвиг...

Переставить строки матрицы, чтобы первый столбец оказался упорядоченным по убыванию
Ребята, помогите пожалуйста решить задачу: Составить программу, которая выполняет перестановку строк массива А таким образом, чтобы...

6
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
30.05.2016, 05:38
Про то, как ввести массив можно не распинаться:
Pascal
1
2
3
4
5
6
begin
  var N := ReadLnInteger('N = ');
  var A : array of Integer;
  SetLength(A, N);
  for var i := 1 to N do A[i-1] := ReadLnInteger('A[' + i + '] =');
  ...
Теперь нужно вывести состояние массива до и после сортировки:
Pascal
1
2
3
4
  WriteLn('   До сортировки:', A);
  ...
  WriteLn('После сортировки:', A);
end.
Ну и, собственно, осталось вставить между этими двумя выводами саму сортировку…
Для этого, на вскидку, могу предложить два варианта.

Первый типа обменной сортировки:
Pascal
1
2
3
4
5
6
7
8
9
10
  var WithoutExchange : Boolean;
  repeat
    WithoutExchange := True;
    for var i := 0 to N-2 do
      if A[i] > A[i+1] then
        begin
          Swap(A[i], A[i+1]);
          WithoutExchange := False;
        end;
  until WithoutExchange;
Второй более экономичный типа гномьей сортировки:
Pascal
1
2
3
4
5
6
7
8
9
  var i := 0;
  while i < N-1 do
    if A[i] > A[i+1] then
      begin
        Swap(A[i], A[i+1]);
        if i > 0 then i -= 1;
      end
    else
      i += 1;
В любом случае массив будет упорядочен даже если не на своём месте будет стоять более одного элемента массива.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
30.05.2016, 06:14
Однако есть условие
Цитата Сообщение от DeepSanctum Посмотреть сообщение
Методы сортировок для всего исходного массива не использовать.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
30.05.2016, 06:33
Э-э-э…
Про это я подумал, что не использовать метод Sort…

Добавлено через 2 минуты
Просто, получается, что решая данное задание любым способом (который возможно может прийти на ум) всё равно будет использован какой-то метод сортировки уже кем то описанный!
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
30.05.2016, 07:35
Цитата Сообщение от JuriiMW Посмотреть сообщение
всё равно будет использован какой-то метод сортировки
Нет, сдвиги в массиве это не сортировка, там нет обменов.
0
 Аватар для Cyber_Monster_
148 / 129 / 155
Регистрация: 22.03.2016
Сообщений: 502
30.05.2016, 08:35
Цитата Сообщение от JuriiMW Посмотреть сообщение
Про то, как ввести массив можно не распинаться:
Pascal
1
2
3
4
5
6
begin
* var N := ReadLnInteger('N = ');
* var A : array of Integer;
* SetLength(A, N);
* for var i := 1 to N do A[i-1] := ReadLnInteger('A[' + i + '] =');
* ...
Ну ввести можно и так:
Pascal
1
2
3
begin
  var A:= Range(1,ReadInteger('Введите количество элементов: ')).Select(x -> ReadInteger(('Введите число №'+ x.ToString + ': ').ToString)).ToArray.Println('; ');
end.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
30.05.2016, 09:32
Cyber_Monster_, думаете, раз ТС такую тему поднял, он осилит вашу строчку?
Он, скорее всего, даже мою не смогётъ уразуметь…
;–)

Добавлено через 3 минуты
Цитата Сообщение от Puporev Посмотреть сообщение
сдвиги в массиве
— это сортировка вставками…
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.05.2016, 09:32
Помогаю со студенческими работами здесь

Переставить строки матрицы, чтобы первый столбец оказался упорядоченным по убыванию
Составить программу, которая выполняет перестановку строк массива А таким образом, чтобы первый столбец содержащий наименьший элемент...

Переставить строки и столбцы матрицы так чтобы максимальный элемент оказался справа сверху
#include &quot;stdafx.h&quot; #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace std; int main() { int n, max,...

Матрица. Найти наибольший элемент 1-го столбца и переставить строки так, чтобы он оказался в левом верхнем углу
Дана матрица целых чисел A(m*n). Найти наибольший элемекнт 1-го столбца и переставить строки так, чтобы он оказался в левом верхнем углу.

Найти наибольший элемент 1-го столбца матрицы и переставить строки так, чтобы он оказался в левом верхнем углу
ооооооочень нужно...заранее спасибо! 4. Дана матрица целых чисел А (mхn). Найти наибольший элемент 1-го столбца и переставить строки так,...

Выполнить перестановку столбцов и строк матрицы так, чтобы минимальный элемент оказался в левом верхнем углу
Выполнить перестановку столбцов и строк двумерного массива так, чтобы минимальный элемент приобрел индекс 1.1 (левый верхний). Выводить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru