Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Алгоритм] Проблемы с сортировкой массива 
:(
    Опции темы
IwantToBeProgrammer
Дата 9.7.2007, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.7.2007

Репутация: нет
Всего: нет



К массиву X=(1,3,6,2,7,4,8,5) применяется алгоритм сортировки:

нц для j от 2 до n      'n должно быть 8
i=j-1
y=x[j]
     нц пока y>x[i] и i>0
     x[i+1]=x[i]
     i=i-1
     кц
x[i+1]=y
кц

Сколько раз в процессе сортировки изменяются значения элементов массива?
28, 30,27,26 или 29?

Предлагаю свою версию решения:
1)   i=1; j=2;y=x[j]=3
x(2)=x(1)=1 (т.к. 3>1 и 1>0)
-------
x(1)=3

2)   i=2; j=3; y=6
x(3)=x(2)=1 (6>1 и 2>0)
x(2)=x(1)=3 (6>3 и 1>0)
-------
x(1)=6

3)   i=3; j=4; y=2
x(4)=x(3)=1 (2>1 и 3>0)
x(3)=x(2)=3 (но 2<3 => отсюда и далее - не подходит)
-------
x(1)=2

4)   i=4; j=5; y=7
x(5)=x(4)=1 (7>1 и 4>0)
x(4)=x(3)=1 (7>1 и 3>0 но значение не изменилось => не подходит)
x(3)=x(2)=3 (7>3 и 2>0)
x(2)=x(1)=2 (7>2 и 1>0)
-------
x(1)=7

5)   i=5; j=6; y=4
x(6)=x(5)=1 (4>1 и 5>0)
x(5)=x(4)=1 (4>1 и 4>0 - значение элемента не изменилось)
x(4)=x(3)=1 (4>3 и 3>0)
x(3)=x(2)=1 (4>2 и 2>0)
x(2)=x(1)=1 (4<7 и 1>0 - не подходит)
-------
x(1)=4

6)   i=6; j=7; y=8
x(7)=x(6)=1 (8>1 и 6>0)
x(6)=x(5)=1 (8>1 и 5>0 - значение элемента не изменилось)
x(5)=x(4)=3 (8>3 и 4>0)
x(4)=x(3)=2 (8>2 и 3>0)
x(3)=x(2)=2 (8>2 и 2>0 - значение элемента не изменилось)
x(2)=x(1)=4 (8>4 и 1>0)
-------
x(1)=8

7)   i=7; j=8; y=5
x(8)=x(7)=1 (8>1 и 6>0)
x(7)=x(6)=1 (8>1 и 6>0 -  значение элемента не изменилось)
x(6)=x(5)=3 (8>1 и 6>0)
x(5)=x(4)=2 (8>1 и 6>0)
x(4)=x(3)=2 (8>1 и 6>0 -  значение элемента не изменилось)
x(3)=x(2)=4 (8>1 и 6>0)
x(2)=x(1)=8 (8>1 и 6>0)
-------
x(1)=5

В сумме выходит значения элементов менялись 26 раз, но ответ почемуто 29. Впрочем я просто недоверяю системе ответов, потому прошу проверить алгоритми написать сколько же всётаки раз здесь происходит изменение знач. элем. при сортировке... smile 



PM MAIL   Вверх
JackYF
Дата 9.7.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 2
Всего: 162



IwantToBeProgrammer, хех.
Программа выдала - 28.

Прога следующая, проверяйте:
Код

#include <iostream>

int main()
{
    int x[] = { 0xFFFF, 1,3,6,2,7,4,8,5 };
    int y,i;

    int __ic = 0; //instruction counter
    for (int j = 2; j <= 8; ++j )
    {
        i = j - 1;
        y = x[j];
      while ( y > x[i] && i > 0 )
      {
            x[i+1] = x[i];
            --i;
            ++__ic;
      }
        x[i+1] = y;
        ++__ic;
    }

    for ( int j = 1; j <= 8; ++j )
    {
        printf("%i ", x[j]);
    }

    printf("Instructions count: %i\n", __ic);
}



Это сообщение отредактировал(а) JackYF - 9.7.2007, 16:24


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
SoWa
Дата 9.7.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 3
Всего: 74



Ты может на бумаге плохо сортируешь?


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
IwantToBeProgrammer
Дата 9.7.2007, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.7.2007

Репутация: нет
Всего: нет



Цитата(SoWa @ 9.7.2007,  20:39)
Ты может на бумаге плохо сортируешь?

на бумаге-то лучше сортирую чем в компе даж)

Вот я и думаю, вроде всё правильно и нормально,а чёт не сходится хотя в элементарных вопросах система ответов даёт неверные ответы.
так что не знаю неправильно ли это вообще? что касается языков то С не владею. по мне лучше переделать всё под Basic. и всё же вопрос остаётся открытиым: какой ответ реально правильный и что неверно в моём решении, если таковое неправильное есть??...

Это сообщение отредактировал(а) IwantToBeProgrammer - 9.7.2007, 22:18
PM MAIL   Вверх
IwantToBeProgrammer
Дата 10.7.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.7.2007

Репутация: нет
Всего: нет



JackYF,  и все остальные: разобралося с сортировкой методом пузырька
ответ по составленной в С программе верен. прошу в той же программе проверить ещё несколько массивов на тот же алгоритм:
X(4,2,6,1,8,3,7,5)
X(2,4,5,1,7,6,8,3)
X(1,2,6,7,8,5,4,3)
X(3,2,1,6,7,8,4,5)
X(3,1,4,7,8,2,6,5)
PM MAIL   Вверх
JackYF
Дата 12.7.2007, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 2
Всего: 162



Эх... ты бы уже сам запустил программу... вот результаты:

4,2,6,1,8,3,7,5 - 24.
2,4,5,1,7,6,8,3 - 26.
1,2,6,7,8,5,4,3 - 23.
3,2,1,6,7,8,4,5 - 26.
3,1,4,7,8,2,6,5 - 25.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.