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. Вот.И, вообще, весь код косячный.
Одуванчик Опубликовано 29 февраля, 2012 Жалоба Опубликовано 29 февраля, 2012 Давайте так. Ближе к выходным (или на выходных) скину рабочий код (ибо он на флешке, флешка не у меня, а писать сейчас честно лень и некогда).Могу также прокомментировать ваш код полностью (где что лично мне не нравится). Надо?
Koshak Опубликовано 2 марта, 2012 Автор Жалоба Опубликовано 2 марта, 2012 все,спасибо,не надосегодня сдал
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти