Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Кейт Либби
4 / 3 / 1
Регистрация: 16.10.2011
Сообщений: 69
#1

перестановки и сравнения при сортировании

27.02.2012, 21:44. Просмотров 935. Ответов 15
Метки нет (Все метки)

подскажите пожалуйста, как подсчитать количество перестановок и сравнений при сортировании двумерного массива методом шелла
??

Добавлено через 4 часа 5 минут
нигде не могу найти этого, все обыскала уже.
подскажите, ну же..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2012, 21:44
Ответы с готовыми решениями:

Осуществить визуализацию перестановки при сортировке массива
Короч, надо осуществить визуализацию перестановки при сортировке. Сортировка...

Массив: перестановка индексных номеров при приведении исходной перестановки к натуральной
Дан массив из первых n натуральных чисел( т. е. произвольная перестановка из...

Вывести все возможные перестановки N заданных цифр, формируя при этом последовательность из K цифр
Дана задача: Вывести все возможные перестановки N заданных цифр формируя при...

Перестановки: чтобы любые две соседние перестановки отличались только порядком двух соседних элементов
Вводится число n <= 8. Вывести все перестановки чисел 1,2..,n, так, чтобы две...

Признак сравнения, при исследовании ряда на сходимость
\sum_{n=1}^{inf}{(-1)}^{n} * \frac{{Sin}^{2}n}{{n}^{2}+3} Имеется вот такой...

15
Gorev
135 / 132 / 30
Регистрация: 08.12.2009
Сообщений: 565
Записей в блоге: 3
27.02.2012, 21:49 #2
Дайте теорию на метод шелла.
0
Кейт Либби
4 / 3 / 1
Регистрация: 16.10.2011
Сообщений: 69
28.02.2012, 08:50  [ТС] #3
Цитата Сообщение от Gorev Посмотреть сообщение
Дайте теорию на метод шелла.
прогугли

и вообще, теории там пруд пруди

но нет ничего о количестве этих перестановок!!!
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.02.2012, 11:38 #4
Кейт Либби, там просто в определенное место нужно счетчик прописать. Выложите код.
0
Кейт Либби
4 / 3 / 1
Регистрация: 16.10.2011
Сообщений: 69
28.02.2012, 20:43  [ТС] #5
BumerangSP,
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
uses crt;
var
  incr: array [0..23] of integer;
  ch,ch2,n,q,k:integer;
  mass:array [0..1000] of integer;
  masiv2:array [0..100,0..10] of integer;
f:text;
    C: Boolean;
     G: Integer;
     I: Integer;
     J: Integer;
     Tmp: Integer;
     len: Integer;
     cur_inc: integer;
 begin clrscr;
Write ('Количество строк:'); Readln (k);
Write ('Количество столбцов:'); Readln (q);
n:=0;
for ch2:=0 to k-1 do
begin
for ch:=0 to q-1 do
 begin
 masiv2[ch2,ch]:=random(100)-random(100);
 mass[n]:=masiv2[ch2,ch];
  write (masiv2[ch2,ch],' ');
  inc(n);
 end;
writeln;
end;
writeln;
 
n:=n-1;
  len := n;
  cur_inc := 0;
  while 3*incr[cur_inc + 1] <= n do inc(cur_inc);
  repeat
    g := incr[cur_inc];
    i := g;
    repeat
      j := i - g;
      c := True;
      repeat
        if mass[j] >= mass[j + g] then
          c := False
        else
        begin
          Tmp := mass[j];
          mass[j] := mass[j+g];
          mass[j+g] := Tmp;
        end;
        dec(j, g);
      until  not ((j >= 0) and C);
      inc(i);
    until  not (i <= len);
    dec(cur_inc);
  until  not (cur_inc <> -1);
  n:=0;
  for ch2:=0 to k-1 do
begin
for ch:=0 to q-1 do
 begin
 masiv2[ch2,ch]:=mass[n];
  write (masiv2[ch2,ch],' ');
  inc(n);
 end;
writeln;
end;
 
 
assign(f,'1.txt');
rewrite(f);
for ch2:=0 to k-1 do
 begin
  for ch:=0 to q-1 do
    begin
     write (f, masiv2[ch2,ch],' ');
    end;
   writeln(f,' ');
 end;
close(f);
end.
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.02.2012, 21:59 #6
35 строка:
Pascal
1
2
while 3*incr[cur_inc + 1] <= n do
   inc(cur_inc);
Что Вы хотите здесь показать? Условие никогда не выполнится, значение массива не задано, поэтому всегда будет = 0. Увеличивается только индекс.
0
Кейт Либби
4 / 3 / 1
Регистрация: 16.10.2011
Сообщений: 69
28.02.2012, 22:24  [ТС] #7
Цитата Сообщение от BumerangSP Посмотреть сообщение
35 строка:
Pascal
1
2
while 3*incr[cur_inc + 1] <= n do
   inc(cur_inc);
Что Вы хотите здесь показать? Условие никогда не выполнится, значение массива не задано, поэтому всегда будет = 0. Увеличивается только индекс.
то есть можно просто убрать это??
или что??
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.02.2012, 22:31 #8
Кейт Либби, кхм, ну, в дальнейшем массив участвует в коде. Вам-то наверно виднее Или...откуда взят код? Это оригинал?
0
Кейт Либби
4 / 3 / 1
Регистрация: 16.10.2011
Сообщений: 69
29.02.2012, 01:40  [ТС] #9
BumerangSP, кстати я уже сама разобралась с перестановками
и все работает
вот..
даже с этой, 35 строкой
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
29.02.2012, 15:43 #10
Цитата Сообщение от Кейт Либби Посмотреть сообщение
даже с этой, 35 строкой
Но как?? Вот что интересно

Добавлено через 1 минуту
Хотя досовский турбо паскаль все пропустит
0
Кейт Либби
4 / 3 / 1
Регистрация: 16.10.2011
Сообщений: 69
29.02.2012, 17:29  [ТС] #11
Цитата Сообщение от BumerangSP Посмотреть сообщение
Но как?? Вот что интересно
очень просто
нашла то самое место где нужно вставить счетчик. и всего-то

Добавлено через 1 минуту
Хотя досовский турбо паскаль все пропустит
и паскаль не турбо, и не досовский.
там вообще нет ошибок.
все очень даже великолепно вышло
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
29.02.2012, 17:40 #12
очень просто
нашла то самое место где нужно вставить счетчик. и всего-то
Не, ну, эт понятно) Как заработало с этой 35-й строчкой??
и паскаль не турбо, и не досовский.

Не по теме:

А что за "мастер-компилятор" тогда такое пропустил? (все про ту же строку)

0
Кейт Либби
4 / 3 / 1
Регистрация: 16.10.2011
Сообщений: 69
29.02.2012, 22:24  [ТС] #13
BumerangSP, pascalABC.net
35 строчка там не задействована. что с ней, что без нее - сортировка осуществляется.
только вот сегодня мне сказали что таким образом получается не метод шелла, а просто вставки.
хотя это уже не важно
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
29.02.2012, 22:40 #14
Кейт Либби, ну, вообще, она задействуется уже с 37 строки)
pascalABC.net

Не по теме:

Хм, а на обычном абс паскале ни в какую не захотел.

0
Кейт Либби
4 / 3 / 1
Регистрация: 16.10.2011
Сообщений: 69
29.02.2012, 22:45  [ТС] #15
BumerangSP, потому что обычный это далеко не .net ведь
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
29.02.2012, 22:47 #16
Кейт Либби,

Не по теме:

в принципе так оно и есть)

0
29.02.2012, 22:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.02.2012, 22:47

Условие сравнения при делении без остатка
подскажите с кодом, как правильно будет: нужно: if ($i == 0 или $i == (...

Остановить цикл сравнения строк при их совпадении
мне надо чтобы цикл останавливался а не начинался с нуля! int k = 6; ...

Минимальное количество операций сравнения при поиске элемента в массиве
Здравствуйте! Такой вопрос: за какое минимальное количество операций сравнения...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru