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 все,спасибо,не надосегодня сдал Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти