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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2009, 21:12   #1
natasha971929
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 15
По умолчанию сортировка массива

│ Колич-во │ │ │ Направление
│ чисел │ Диапазон │ Метод │ сортировки
────────│──────────│────────────│── ─────│───────────────
14 42-60 2 по возрастанию
Составить процедуры: а) заполнения массива, содержащего заданное количество элементов типа byte, случайными числами в указанном диапазоне; б) сортировки массива Метод "четных и нечетных транспозиций"
natasha971929 вне форума Ответить с цитированием
Старый 15.12.2009, 01:05   #2
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Можно чуть по подробней?
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 15.12.2009, 09:17   #3
natasha971929
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 15
По умолчанию

Метод "четных и нечетных транспозиций"

Этот метод является разновидностью метода обмена. Сортировка выполняется следующим образом. Массив просматривается многократно, причем на первом просмотре сравниваются A[i] с A[i+1] для всех нечетных i. На втором просмотре сравниваются A[i] с A[i+1] для всех четных i. Каждый раз, когда A[i]>A[i+1], выполняется обмен этих элементов. Просмотры продолжаются до тех пор, пока массив не будет упорядочен. Очевидно, в таком случае не будет выполнен ни один обмен элементов. Описание алгоритма:
Заполнение массива
Повторять
│ перестановка=0
│ i=1
│ Пока i<N выполнять
│ │ Если A[i]>A[i+1] то
│ │ │ Переставить(A[i],A[i+1])
│ │ │ перестановка=1
│ │ i=i+2
│ i=2
│ Пока i<N выполнять
│ │ Если A[i]>A[i+1] то
│ │ │ Переставить(A[i],A[i+1]);
│ │ │ перестановка=1;
│ │ i=i+2;
до получения перестановка=0;
natasha971929 вне форума Ответить с цитированием
Старый 15.12.2009, 09:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну сам метод примерно так:
Код:
for(int perestanovka=1;perestanovka==0;){
 for (int i=1;i<N;i+=2){
   if(a[i]>a[i+1]) {
     int k=a[i];a[i]=a[i+1];a[i]=k;
    perestanovka=1;
   }
 } 
 for (int i=2;i<N;i+=2){
   if(a[i]>a[i+1]) {
     int k=a[i];a[i]=a[i+1];a[i]=k;
    perestanovka=1;
  }
 } 
}
Не проверял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка массива Sparky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 26.10.2009 11:57
Сортировка массива Paul_AG Общие вопросы C/C++ 16 05.06.2009 21:42
Сортировка массива Cpluser Общие вопросы C/C++ 4 04.03.2009 23:57
Сортировка массива ManU Помощь студентам 1 21.09.2008 10:41
Сортировка массива vitalik007 Общие вопросы Delphi 2 22.09.2007 20:04