0 / 0 / 0
Регистрация: 24.06.2018
Сообщений: 23
1

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

24.06.2018, 12:36. Показов 1922. Ответов 4
Метки нет (Все метки)

Дан целочисленный вектор А[1..N]. Программно реализовать алгоритм размещения элементов вектора А в порядке убывания на основе методов сортировки:
- линейный выбор; - линейный выбор с обменом; - быстрая сортировка.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2018, 12:36
Ответы с готовыми решениями:

Разместить элементы вектора в порядке возрастания
Дана квадратная матрица целых чисел. Составить паскаль-программу , состоящий из главного модуля и...

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

Заменить все положительные элементы вектора на их округленные целые и отсортировать в порядке убывания
Дан вещественный вектор A .Заменить все положительные элементы вектора на их округленные целые и...

Отсортировать элементы вектора в порядке убывания, не используя встроенные функции, включая sort()
Здравствуйте! Прошу помощи. Есть вектор: А=(1 3 6 4 8 3) Надо отсортировать элементы в порядке...

4
Модератор
9528 / 4857 / 3228
Регистрация: 17.08.2012
Сообщений: 15,194
24.06.2018, 12:50 2
Сортировки
0
0 / 0 / 0
Регистрация: 24.06.2018
Сообщений: 23
24.06.2018, 21:15  [ТС] 3
я там не нашел ни линейного выбора, ни линейного выбора с обменом
но спасибо

Добавлено через 5 минут
я понимаю, что такой борзости вы не ждали, но вы не могли бы сделать эту программу мне?
0
Модератор
9528 / 4857 / 3228
Регистрация: 17.08.2012
Сообщений: 15,194
25.06.2018, 00:30 4
Лучший ответ Сообщение было отмечено Arseny_Condrus как решение

Решение

Цитата Сообщение от Arseny_Condrus Посмотреть сообщение
борзости
Да ладно. Форум предназначен для помощи в решении задач. "Сделайте за меня" - разновидность просьбы о помощи. Конечно, приятно, когда вопрошающий хоть что-то делает, но что-то делать здесь вынуждать не принято.

Плохо, кстати, владеете материалом.

Цитата Сообщение от Arseny_Condrus Посмотреть сообщение
эту программу
Наверное, всё-таки три программы.
Цитата Сообщение от Arseny_Condrus Посмотреть сообщение
в порядке убывания
Если в массиве есть одинаковые по значению элементы, то отсортировать массив по убыванию (или возрастанию) невозможно. Будем считать, что имеется ввиду сортировка по невозрастанию. После постсоветской реформы образования составители задач путаются в терминах, и, как мне кажется, стали значительно глупее. Поэтому сейчас без самостоятельных занятий стать хорошим специалистом возможно только при удачном стечении разных обстоятельств.

Сортировка линейным выбором с обменами = сортировка выбором.

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

Быстрая сортировка = сортировка Хоара.

Цитата Сообщение от Arseny_Condrus Посмотреть сообщение
Дан целочисленный вектор
... И где этот вектор? Кем дан - непонятно. Как вектор попадает в программу - неясно. Буду считать, что вектор генерируется самой программой с помощью ГПСЧ.

Сортировка выбором без обменов, выбранный элемент массива помечается числом, меньшим наименьшего (поскольку сортировка по невозрастанию):
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
27
28
29
30
31
const
  n = 16;
  lim = 99;
  d = trunc(ln(lim) / ln(10)) + 3;
 
var
  a, b: array[1..n] of integer;
  i, j, max: integer;
 
begin
  randomize;
  writeln('Source aray:');
  for i := 1 to n do
    begin
      a[i] := -lim + random(lim * 2 + 1);
      write(a[i]:d)
    end;
  writeln;
  for i := 1 to n do
    begin
      max := 1;
      for j := 1 to n do
        if a[j] > a[max]
          then max := j;
      b[i] := a[max];
      a[max] := -lim - 1
    end;
  writeln('Sorted array:');
  for i := 1 to n do write(b[i]:d);
  readln
end.
Сортировка выбором (с обменами):
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
27
28
29
30
31
32
33
34
35
const
  n = 16;
  lim = 99;
  d = trunc(ln(lim) / ln(10)) + 3;
 
var
  a: array[1..n] of integer;
  i, j, max, t: integer;
 
begin
  randomize;
  writeln('Source aray:');
  for i := 1 to n do
    begin
      a[i] := -lim + random(lim * 2 + 1);
      write(a[i]:d)
    end;
  writeln;
  for i := 1 to n - 1 do
    begin
      max := i;
      for j := i to n do
        if a[j] > a[max]
          then max := j;
        if max > i
          then begin
            t := a[i];
            a[i] := a[max];
            a[max] := t
          end
    end;
  writeln('Sorted array:');
  for i := 1 to n do write(a[i]:d);
  readln
end.
Быстрая сортировка, рекурсивный алгоритм, выбор опорного элемента с помощью разбиения Хоара:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
const
  n = 16;
  lim = 99;
  d = trunc(ln(lim) / ln(10)) + 3;
 
type
  arr = array[1..n] of integer;
 
procedure qsort(var a: arr; l, r: integer);
var
  i, j, x, y: integer;
begin
  i := l;
  j := r;
  x := a[(l + r) div 2];
  repeat
    while a[i] > x do inc(i);
    while x > a[j] do dec(j);
    if i <= j
      then begin
        y := a[i];
        a[i] := a[j];
        a[j] := y;
        inc(i);
        dec(j)
      end;
  until i > j;
  if l < j then qsort(a, l, j);
  if i < r then qsort(a, i, r)
end;
 
var
  a: arr;
  i: integer;
 
begin
  randomize;
  writeln('Source aray:');
  for i := 1 to n do
    begin
      a[i] := -lim + random(lim * 2 + 1);
      write(a[i]:d)
    end;
  writeln;
  qsort(a, 1, n);
  writeln('Sorted array:');
  for i := 1 to n do write(a[i]:d);
  readln
end.
1
0 / 0 / 0
Регистрация: 24.06.2018
Сообщений: 23
25.06.2018, 09:35  [ТС] 5
спасибо огромное просто!! я с большим удовольствием все прочитал и полностью соглашусь. еще раз извиняюсь за борзоту. просто в этой теме я вообще никаким боком не разбираюсь. спасибо)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2018, 09:35
Помогаю со студенческими работами здесь

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

Расположить элементы каждой строки в порядке не убывания их абсолютных величин, используя модуль сортировки элементов одномерного
Ребята, будьте добры, помогите.:) Для заданной матрицы расположить элементы каждой строки в...

Разместить сначала цифры в порядке возростания, а потом буквы в порядке убывания
Дан рядок символов введенный с клавиатуры, который состоит из букв и цифр. Необходимо в новом рядке...

Вывести вначале элементы массива с нечетными номерами в порядке возрастания номеров, затем - элементы с четными в порядке убывания номеров
дан массив А размера N.вывести вначале элементы с нечетными номерами в порядке возрастания...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru