Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2017, 19:58   #1
Korban
Пользователь
 
Регистрация: 02.11.2016
Сообщений: 26
По умолчанию Создать массив, в котором n элементов. Первые k элементов упорядочить по возрастанию, последние по убыванию.

Создать массив, в котором n элементов. Первые k элементов упорядочить по возрастанию, последние по убыванию.
Korban вне форума Ответить с цитированием
Старый 16.03.2017, 22:49   #2
SASFM
Форумчанин
 
Аватар для SASFM
 
Регистрация: 26.03.2015
Сообщений: 191
По умолчанию

Цитата:
Первые k элементов упорядочить по возрастанию, последние по убыванию.
К последних элементов или остальные элементы?

например при N=9 и K=3 какой должен быть результат?

1 98 5 74 2 3 7 85 95

так:
1) 1 5 98 95 85 74 7 3 2
или так:
2) 1 5 98 74 2 3 95 85 7

Вот решения для 1 вариант
Код:
var j,i,k,n:integer;
    m:array[1..1000] of integer;
begin
  read(n,k);
  //Ввод элементов массива
  for i:=1 to n do
    read(m[i]);
    //Сортировка по возрастанию
  for i:=1 to k do
    for j:=i to k do      
      if m[j]<m[i] then swap(m[i],m[j]);
    //Сортировка по убыванию
  for i:=k+1 to n do
    for j:=i to n do      
      if m[j]>m[i] then swap(m[i],m[j]);
    //Вывод элементов массива
  for i:=1 to n do
  print(m[i]);
end.
А это для 2 вариант:

Код:
var j,i,k,n:integer;
    m:array[1..1000] of integer;
begin
  read(n,k);
  //Ввод элементов массива
  for i:=1 to n do
    read(m[i]);
    //Сортировка по возрастанию
  for i:=1 to k do
    for j:=i to k do  
    begin
      if m[j]<m[i] then swap(m[i],m[j]);
    //Сортировка по убыванию       
      if m[n-k+j]>m[n-k+i] then 
      swap(m[n-k+i],m[n-k+j]);
    end;
    //Вывод элементов массива
  for i:=1 to n do
  print(m[i]);
end.
Моя родина там, где мой компьютер

Последний раз редактировалось SASFM; 16.03.2017 в 23:10.
SASFM вне форума Ответить с цитированием
Старый 18.03.2017, 19:05   #3
Korban
Пользователь
 
Регистрация: 02.11.2016
Сообщений: 26
По умолчанию

А как переделать под сортировку методом Шелла?
Korban вне форума Ответить с цитированием
Старый 18.03.2017, 23:15   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Сообщение от Korban Посмотреть сообщение
А как переделать под сортировку методом Шелла?
Вот это
Код:
 for j:=i to k do      
      if m[j]<m[i] then swap(m[i],m[j]);
Заменить на метод Шелла
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка четных элементов массива по возрастанию, а нечетных-по убыванию - C (СИ) DimaIT Общие вопросы C/C++ 13 13.11.2015 22:22
Упорядочить по возрастанию сумм элементов строк Evgenii_95 Паскаль, Turbo Pascal, PascalABC.NET 1 03.06.2015 09:23
Упорядочить ее столбцы по убыванию произведений их элементов. Urbic Помощь студентам 3 11.04.2013 10:01
Упорядочить массив по возрастанию и убыванию методом выбора. Агварес Помощь студентам 2 17.01.2012 12:12
Упорядочить матрицу по убыванию модулей элементов x3 aka a-droo Microsoft Office Excel 2 12.12.2011 01:21