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 Опубликовано 2 марта, 2012 Автор Жалоба Опубликовано 2 марта, 2012 все,спасибо,не надосегодня сдал Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.