Koshak Опубликовано 28 января, 2012 Жалоба Поделиться Опубликовано 28 января, 2012 Знает кто метод бинарных вставок?#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;}вроде так, но чет не работает Цитата Ссылка на комментарий
Одуванчик Опубликовано 22 февраля, 2012 Жалоба Поделиться Опубликовано 22 февраля, 2012 for(i=0;i { l=1,p=i-1,s=(l+p)/2; } Вот это не пойму зачем. Цитата Ссылка на комментарий
Koshak Опубликовано 23 февраля, 2012 Автор Жалоба Поделиться Опубликовано 23 февраля, 2012 для бинарного поиска,не? Цитата Ссылка на комментарий
Hersones Опубликовано 23 февраля, 2012 Жалоба Поделиться Опубликовано 23 февраля, 2012 #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();} Цитата Ссылка на комментарий
Koshak Опубликовано 23 февраля, 2012 Автор Жалоба Поделиться Опубликовано 23 февраля, 2012 спасиботолько не понятно, что имеется ввиду в выводе символов.типа 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(); } Цитата Ссылка на комментарий
Hersones Опубликовано 24 февраля, 2012 Жалоба Поделиться Опубликовано 24 февраля, 2012 #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();}э-э-э, не знаю, что произошло) копипастил из архива Цитата Ссылка на комментарий
Koshak Опубликовано 24 февраля, 2012 Автор Жалоба Поделиться Опубликовано 24 февраля, 2012 я конечно извеняюсь, но это сортировка обычными вставками + бинарный поискна самом деле нужно реализовать метод сортировки, который так и называется "Бинарные вставки":) Цитата Ссылка на комментарий
Одуванчик Опубликовано 28 февраля, 2012 Жалоба Поделиться Опубликовано 28 февраля, 2012 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. Вот.И, вообще, весь код косячный. Цитата Ссылка на комментарий
Koshak Опубликовано 28 февраля, 2012 Автор Жалоба Поделиться Опубликовано 28 февраля, 2012 что косячного,а? Цитата Ссылка на комментарий
Одуванчик Опубликовано 29 февраля, 2012 Жалоба Поделиться Опубликовано 29 февраля, 2012 Давайте так. Ближе к выходным (или на выходных) скину рабочий код (ибо он на флешке, флешка не у меня, а писать сейчас честно лень и некогда).Могу также прокомментировать ваш код полностью (где что лично мне не нравится). Надо? Цитата Ссылка на комментарий
Koshak Опубликовано 1 марта, 2012 Автор Жалоба Поделиться Опубликовано 1 марта, 2012 будьте добры Цитата Ссылка на комментарий
Koshak Опубликовано 2 марта, 2012 Автор Жалоба Поделиться Опубликовано 2 марта, 2012 все,спасибо,не надосегодня сдал Цитата Ссылка на комментарий
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.