Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/190: Рейтинг темы: голосов - 190, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 3

Выполнить сортировку массива по убыванию методом пузырька

10.03.2015, 21:15. Показов 38207. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задан одномерный массив из 7 случайных чисел .Выполнить сортировку массива по убыванию методом пузырька
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.03.2015, 21:15
Ответы с готовыми решениями:

Выполнить сортировку элементов массива, стоящих на чётных номерах, по убыванию методом пузырька
Задан целочисленный массив из 10 случайных чисел.Выполнить сортировку элементов массива,стоящих на чётных номерах по убыванию методом...

Произвести сортировку массива методом «пузырька»
Дан одномерный массив целых чисел из 30 элементов. Произвести сортировку массива методом «пузырька». Выдать массив на экран до сортировки и...

Отсортировать по возрастанию методом пузырька с ограничением первую половинку массива,а вторую по убыванию методом отбора
Отсортировать по возрастанию методом пузырька с ограничением первую половинку массива,а вторую по убыванию методом отбора.спасибо за...

4
 Аватар для Leon_AD
105 / 105 / 51
Регистрация: 11.04.2014
Сообщений: 160
10.03.2015, 21:53
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const n=7;
var i,j,c: integer;
    a: array[1..n] of integer;
    begin
    for i:=1 to n do
        begin
             a[i]:=random(21);
             write(a[i]:3);
        end;
    writeln();
    for i:=1 to n-1 do
        for j:=1 to n-1 do
        if(a[j]<a[j+1])
        then
            begin
                 c:=a[j];
                 a[j]:=a[j+1];
                 a[j+1]:=c;
             end;
    for i:=1 to n do
        write(a[i]:3);
    writeln();
    end.
1
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,383
11.03.2015, 14:07
Leon_AD, неэффективный у Вас пузырёк. Можно побыстрее сделать. Повторять внутренний цикл лучше до тех пор, пока имел место обмен элементов массива. randomize написать забыли. Вот, подправил:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const n = 7;
var i, c: integer;
    a: array [1..n] of integer;
    b: boolean;
begin
  randomize;
  for i := 1 to n do
    begin
      a[i] := random(21);
      write(a[i]:3)
    end;
  writeln;
  repeat
    b := true;
    for i := 1 to n - 1 do
      if a[i] < a[i + 1]
        then begin
          c := a[i];
          a[i] := a[i + 1];
          a[i + 1] := c;
          b := false
        end
  until b;
  for i := 1 to n do write(a[i]:3);
  readln
end.
И бросайте, если возможно, эту C/С#/С++шную привычку "()" писать, это лишнее. Кстати, есть диалекты паскаля, которые это дело за ошибку считают. Не ставьте лишних скобок. ";" перед end и until писать незачем, end и until и без того ограничители.
0
 Аватар для Leon_AD
105 / 105 / 51
Регистрация: 11.04.2014
Сообщений: 160
11.03.2015, 18:43
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Leon_AD, неэффективный у Вас пузырёк. Можно побыстрее сделать. Повторять внутренний цикл лучше до тех пор, пока имел место обмен элементов массива.
Не совсем понял, что Вы имели ввиду. Это?
Pascal
1
2
for i:=1 to n-1 do
        for j:=1 to n-i-1 do
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
randomize написать забыли.
Это я не забыл, просто не пишу, т.к. и без него элементы каждый раз новые генерируется. Возможно, потому что PascalABC сам это прописывает.
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
И бросайте, если возможно, эту C/С#/С++шную привычку "()" писать, это лишнее.
Разве это ошибка? Просто функция без аргументов. Разве эффективность программы снижается?
0
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,383
13.03.2015, 02:11
Цитата Сообщение от Leon_AD Посмотреть сообщение
Не совсем понял, что Вы имели ввиду. Это?
Да. У Вас обязательно будет n-1 проход по массиву, даже в том случае, если массив уже отсортирован. Неэффективно.
Цитата Сообщение от Leon_AD Посмотреть сообщение
и без него элементы каждый раз новые генерируется.
В PascalABC ABC - да. Однако, в иных диалектах паскаля - далеко не всегда. Ваше решение может пригодиться для людей, которым нужна реализация программы не для этого ущербного PascalABC. Что же не написать лишние randomize и readln?
Цитата Сообщение от Leon_AD Посмотреть сообщение
Разве это ошибка? Просто функция без аргументов. Разве эффективность программы снижается?
Я же написал, что
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
есть диалекты паскаля, которые это дело за ошибку считают.
Так что, уже сами думайте, ошибка оно или нет. Эффективность программы нисколько не страдает. Эти скобки просто игнорируются. И ";" перед end тоже игнорируется. Писать или не писать эти лишние элементы - дело вкуса. Я предпочитаю писать, как учит Никлаус Вирт. А в его синтаксических диаграммах тавтология терминальных символов не приветствуется.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2015, 02:11
Помогаю со студенческими работами здесь

Сортировка двумерного массива по убыванию по столбцам методом пузырька
Отсортировать всю матрицу n*m по столбцам по убыванию. Проверте есть ли в этой матрице элемент, который является кратным сумме из остальных...

Отсортировать главную диагональ массива по убыванию методом «пузырька»
Дан массив из n x m элементов. Отсортировать главную диагональ массива по убыванию методом «пузырька». В коде выдает ошибку,...

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

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

Отсортируйте отрицательные элементы двумерного массива по строкам, по убыванию, методом пузырька
Есть решенная задача, проверьте пожалуйста. ( сортироваться должны только отрицательные, положительные остаются на местах) const...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера 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