Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бинарный поиск в символьном массиве, Запутался с указателями 
V
    Опции темы
Voldemar2004
Дата 12.4.2006, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



Бинарный поиск

Код
int binarySearch(int sortedArray[], int first, int last, int key) {

   while (first <= last) {
       int mid = (first + last) / 2; 
       if (key > sortedArray[mid]) 
           first = mid + 1;  
       else if (key < sortedArray[mid]) 
           last = mid - 1; 
       else
           return mid;   
   }
   return -(first + 1);  
}

int main(int argc, char* argv[])
{
int Lower, Upper;
const int n=7;
int a[n]={1, 2, 3, 5, 7, 10, 15};

cout<<binarySearch(a, 0, n-1, 15);

getch();
return 0;
}



Для символьного массива:
Код
int Binary_Search(char sortedArray[], int first, int last, char *key) {

   while (first <= last) {
       int mid = (first + last) / 2;
       if(strcmp(key, sortedArray) > 0)
           first = mid + 1;
         else if(strcmp(key, sortedArray) < 0)
           last = mid - 1;
       else
           return mid;
   }
   return -(first + 1);
}

int main(int argc, char* argv[])
{
const int n=3;
char a[n]={"aaa", "bbb", "ccc"};

char search="ccc";

cout<<binarySearch(a, 0, n-1, search);

getch();
return 0;
}
Запутался с указателями.

Это сообщение отредактировал(а) Voldemar2004 - 12.4.2006, 21:16


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
MAKCim
Дата 12.4.2006, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

char a[n]={"aaa", "bbb", "ccc"};

тогда уж массив указателей нужен
Код

char* a[n]={"aaa"," bbb", "ccc"};

Цитата

char search="ccc";

тут
Код

char* search="ccc"

Цитата

int Binary_Search(char sortedArray[], int first, int last, char *key)

нужно
Код

int Binary_Search(char* sortedArray[], int first, int last, char* key)




--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Dov
Дата 12.4.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Код
int Binary_Search(char* sortedArray[], int first, int last, char *key)
{    
   while (first <= last)
   {    
       int mid = (first + last) / 2;    
       if(strcmp(key, sortedArray[mid]) > 0)    
           first = mid + 1;    
       else if(strcmp(key, sortedArray[mid]) < 0)    
           last = mid - 1;    
       else    
           return mid;    
   }
   
   return -(first + 1);    
}
    
int main(int argc, char* argv[])    
{    
    const int n = 3;    
    char* a[n]={"aaa", "bbb", "ccc"};    
    char* search="ccc";

    int res = Binary_Search(a, 0, n-1, search);
    if(res >= 0)    
        cout << a[res];
    else
        cout << "not ...";

    cout << endl;
    
    getch();
    
    return 0;    
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
CPlusPlusFAN
Дата 12.4.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Вот работает:
Код

int Binary_Search(char* sortedArray[], int first, int last, char *key)
{while (first <= last)
 {int mid = (first + last) / 2;
  if(strcmp(key, sortedArray[mid]) > 0) first = mid + 1;
  else if(strcmp(key, sortedArray[mid]) < 0) last = mid - 1;
       else return mid;}
  return -(first + 1);}

int main(int argc, char* argv[])
{
const int n=5;
char* a[n]={"aaa", "bbb","bsd", "ccc","sdkfj"};
char* search="ccc";
cout<<Binary_Search(a, 0, n-1, search);
cin.get();
        return 0;
}



Вот ё-моё, опередили...

Это сообщение отредактировал(а) CPlusPlusFAN - 12.4.2006, 22:03
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0877 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.