Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
8 / 8 / 2
Регистрация: 27.10.2013
Сообщений: 206
1

Быстрый поиск

17.10.2014, 20:52. Показов 2584. Ответов 3
Метки нет (Все метки)

Здравствуйте.
Нужно выполнить поиск i-го вхождения заданного элемента в исходном наборе чисел.
Написал такой поиск, но работает медленно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int LineSearch(int A[], int kolvo, int key, int nomer)
{
    int current=0;
    for (int i=0; i<kolvo; i++)
    {
        if (A[i]==key)
        {
            current++;
            if (current==nomer)
            return (i+1);
        }
    }
    return 0;
}
Можно ли это сделать стандартными функциями, и как?

>> Скорость работы проверяет спец. программа, и этот код проверку не проходит...

Добавлено через 17 минут
И вот так не принимает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (int i = 0; i < nomer; i++)
        {
            int position = std::distance(massiv, std::find(massiv, massiv + kolvo_elementov, element));
            if (position < kolvo_elementov)
            {
                if (i==nomer-1)
                    cout << position + 1 << endl;
                else
                    massiv[position]=0;
            }
            else
            {
                cout << "0" << endl;
                break;
            }
        }
Добавлено через 6 минут
Подозреваю, что нужно изменить структуру данных (массив на вектор).
Но как тогда сделать std::distance?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2014, 20:52
Ответы с готовыми решениями:

Быстрый поиск элемента
Добрый день всем! Такой вопрос - есть у меня строка из 64-х чаров. Мне приходит новый чар и нужно...

Быстрый поиск в мапе
Есть мапа вида : std::map&lt;size_t, std::string&gt; Нужно найти элемент меньший или равный элементу из...

Быстрый поиск в векторе из pair
Пытаюсь сделать вектор: vector&lt; pair&lt;string, string&gt; &gt; myVect; По идее, проще воспользоваться...

Быстрый поиск минимального числа
подскажите быстрый алгоритм поиска второго минимального числа в массиве?

3
Модератор
3477 / 2600 / 741
Регистрация: 19.09.2012
Сообщений: 7,967
17.10.2014, 21:08 2
Попробуй так:
C++
1
2
3
4
5
6
7
int LineSearch(int* a, int kolvo, int key, int nomer)
{
    for (int i = 0; i<kolvo; i++)
        if (a[i] == key && !--nomer)
            return ++i;
    return 0;
}
0
220 / 165 / 47
Регистрация: 17.07.2012
Сообщений: 587
17.10.2014, 21:19 3
Лучший ответ Сообщение было отмечено Jen948 как решение

Решение

Jen948, там много запросов дано чтоли?

если да то так можно


C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <algorithm>
#include <map>
#include <vector>
 
using namespace std;
 
int main(){
 
    map<int, vector<int> > pos;
 
    int n;
    scanf("%d", &n);
    for(int i = 1; i <= n; i++)
    {
        int val;
        scanf("%d", &val);
        pos[val].push_back(i);
    }
 
    int m;
    scanf("%d", &m);
    for(int k = 1; k <= m; k++)
    {
        int val, idx;
        scanf("%d %d", &val, &idx);
        
        if(idx > pos[val].size())
            printf("%d\n", 0);
        else
            printf("%d\n", pos[val][idx - 1]);
    }
 
    return 0;
}
1
8 / 8 / 2
Регистрация: 27.10.2013
Сообщений: 206
17.10.2014, 22:07  [ТС] 4
Цитата Сообщение от SlavaSSU Посмотреть сообщение
Jen948, там много запросов дано чтоли?
если да то так можно
Спасибо большое!!! Как часы
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2014, 22:07

Быстрый поиск по полям в коллекции
Есть коллекция объектов класса с разными полями. Нужно организовать быстрый поиск первого элемента...

Быстрый поиск супернатуральных чисел
Натуральное число будем называть супернатуральным, если в своем десятичном виде оно не содержит...

Быстрый поиск совершенных чисел
Чтобы легко можно было отсылать вопрошающих по этому вопросу, создаю новую тему. Напомню, что ...

Быстрый поиск ip адреса в текстовом файле
Нужно найти конкретный ip-адрес в текстовом файле (он может попасться несколько раз). На каждой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru