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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2017, 17:54   #1
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию Найти k-ое по порядку число среди элементов массива шейкерской сортировкой

Найти k-ое по порядку число среди элементов массива это вроде получается помогите реализовать в коде шейкерскую сортировку
Код:
include <iostream>
using namespace std;
#include <clocale>
#include <conio.h>
#include <time.h>
int counter1;
int counter2;
int seach_medium(int L, int R, int mas[])
{
int left, right, medium, ind_med;
left=mas[L];
right=mas[R];
ind_med=(L+R+1)/2;
medium=mas[ind_med];
counter1++;
if ((left==medium) && (medium==right))
{
int i=L;
counter1++;
while ((mas[i]==medium) && (i<R))
i++;
counter1++;
if (mas[i]!=medium)
{
ind_med=i;
medium=mas[ind_med];
}
}
counter1++;
if ((left==medium) && (medium==right))
return -1;
else
{
counter1++;
if (left<=medium)
{
counter1++;
if (medium<=right)
return ind_med;
else
{
counter1++;
if (left<=right)
return R;
else return L;
}
}
else
{
counter1++;
if (left>=right)
{
counter1++;
if (medium>=right)
return ind_med;
else return R;
}
else return L;
}
}
}
void sort(int mas[], int L, int R)
{
int med_item, med_ind, t, i, j;
med_ind=seach_medium(L,R,mas);
if (med_ind!=-1)
{
med_item=mas[med_ind];
i=L;
j=R;
while (i<=j)
{
counter1++;
while (mas[i]<med_item)
i++;
counter1++;
while (mas[j]>med_item)
j--;
if (i<=j)
{
t=mas[i];
mas[i]=mas[j];
mas[j]=t;
i++;
j--;
counter2++;
}
}
if (L<j)
sort(mas,L,j);
if (i<R)
sort(mas,i,R);
}
}
void main()
{
setlocale(LC_ALL,"rus");
counter1=0;
counter2=0;
cout<<"Введите количество элементов: ";
Кристина1998 вне форума Ответить с цитированием
Старый 22.10.2017, 18:34   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

click me
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 22.10.2017, 18:44   #3
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
помогите, пожалуйста, добавить в задание шейкерскую сортировку
Кристина1998 вне форума Ответить с цитированием
Старый 22.10.2017, 18:48   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от Кристина1998 Посмотреть сообщение
помогите, пожалуйста, добавить в задание шейкерскую сортировку
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан целочисленный массив X(N,M).среди элементов нечетных столбцов массива найти количество четных чисел. darwin1 Паскаль, Turbo Pascal, PascalABC.NET 1 15.03.2014 17:50
Даны n, вещественные массивы a(n), b(n). Найти наибольшее среди чисел y,b1,b2,b3,...,bn , где y - сумма элементов массива a Прокурор Паскаль, Turbo Pascal, PascalABC.NET 8 24.06.2013 13:12
одномерный массив размера n. Найти максимальный элемент массива среди элементов массива,после первого отрицательного (Паскаль) Элиза12345 Паскаль, Turbo Pascal, PascalABC.NET 7 13.11.2012 16:03
массиве X(N) найти максимальный элемент среди положительных элементов массива и минимальный среди отрицательных элементов. sorok Общие вопросы C/C++ 2 20.03.2012 12:18
. Среди всех нецелых элементов этого массива найти наименьший и определить его номер в массиве Паскалька^^ Паскаль, Turbo Pascal, PascalABC.NET 3 19.12.2008 14:18