Перейти к содержанию

Метод сортировки бинарными вставками.


Рекомендуемые сообщения

Знает кто метод бинарных вставок?


#include
#include
# include
using namespace std;
int main()
{
setlocale(LC_ALL,"Russian");
const int n=3;
int x[n];
int i,l,p,s,k,t;
cout << "Введите массив длины " << n << endl;
for(i=0;i cin >> x[i];
for(i=0;i {
l=1,p=i-1,s=(l+p)/2;
}
while(l!=s)
{
if(x[s-1]>x[i-1])
p=s;
else
l=s;
s=(l+p)/2;
}
if(x[l-1] {
if(x[i-1]>x[p-1])
l=p+1;
else l=p;
}
k=i;
t=x[i-1];
while(k>l)
{
x[k-1]=x[k-1-1];
k=k-1;
x[l]=t;
i=i+1;
}
cout << x[i];
system("pause");
return 0;
}

вроде так, но чет не работает:(

Ссылка на комментарий
  • 4 недели спустя...

#include

#include

#include

void main(){

setlocale(0,"");

int a[20],k,ki,N,i,u,l=1,max,t,P;

printf(" \n");

scanf("%i",&N);

u=N;

P=N;

for(i=1;i<=N;i++){

printf(" a[%i]\n",i);

scanf("%i",&a);

}

for(t=1;t

for(i=1;i

if(a>a[i+1]){

max=a;

a=a[i+1];

a[i+1]=max;}

else max=a[i+1];

}

P=N-t;

}

printf(" ");

for(i=1;i<=N;i++){

printf("%4i",a);}

printf("\n");

printf(" \n");

scanf("%i",&k);

while(l<=u){

i=(l+u)/2;

ki=a;

if(k

u=i-1;}

else if(k==ki){

printf("");

break;}

else l=i+1;

}

if(l>u){printf("");}

getch();

}

Ссылка на комментарий

спасибо:)только не понятно, что имеется ввиду в выводе символов.

типа


printf(" \n");
scanf("%i",&N);
u=N;
P=N;
for(i=1;i<=N;i++){
printf(" a[%i]\n",i);
scanf("%i",&a[i]);

}
printf(" ");
for(i=1;i<=N;i++){
printf("%4i",a[i]);}
printf("\n");
printf(" \n");
scanf("%i",&k);
}
if(l>u){printf("");}
getch();
}

Ссылка на комментарий

#include

#include

#include

void main(){

setlocale(0,"");

int a[20],k,ki,N,i,u,l=1,max,t,P;

printf("введите длину массива\n");

scanf("%i",&N);

u=N;

P=N;

for(i=1;i<=N;i++){

printf("введите a[%i]\n",i);

scanf("%i",&a);

}

for(t=1;t

for(i=1;i

if(a>a[i+1]){

max=a;

a=a[i+1];

a[i+1]=max;}

else max=a[i+1];

}

P=N-t;

}

printf("массив по возрастанию");

for(i=1;i<=N;i++){

printf("%4i",a);}

printf("\n");

printf("введите искомое число\n");

scanf("%i",&k);

while(l<=u){

i=(l+u)/2;

ki=a;

if(k

u=i-1;}

else if(k==ki){

printf("Удача");

break;}

else l=i+1;

}

if(l>u){printf("неудача");}

getch();

}

э-э-э, не знаю, что произошло) копипастил из архива

Ссылка на комментарий

я конечно извеняюсь, но это сортировка обычными вставками + бинарный поиск:)на самом деле нужно реализовать метод сортировки, который так и называется "Бинарные вставки":)

Ссылка на комментарий

for(i=0;i

{

l=1,p=i-1,s=(l+p)/2;

}

Вот это не пойму зачем.

для бинарного поиска,не?

Если ты это через for загоняешь, то получишь в конце ,что l=1, p=(n-1), s=(l+p)/2=(1+n-1)/2=n/2. Легче сразу написать l=1, p=(n-1), s=n/2. Вот.

И, вообще, весь код косячный.

Ссылка на комментарий

Давайте так. Ближе к выходным (или на выходных) скину рабочий код (ибо он на флешке, флешка не у меня, а писать сейчас честно лень и некогда).

Могу также прокомментировать ваш код полностью (где что лично мне не нравится). Надо?

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...