Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
8 / 8 / 2
Регистрация: 27.10.2013
Сообщений: 207

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

17.10.2014, 20:52. Показов 4703. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.10.2014, 20:52
Ответы с готовыми решениями:

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

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

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

3
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
17.10.2014, 21:08
Попробуй так:
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
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
17.10.2014, 21:19
Лучший ответ Сообщение было отмечено 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
Сообщений: 207
17.10.2014, 22:07  [ТС]
Цитата Сообщение от SlavaSSU Посмотреть сообщение
Jen948, там много запросов дано чтоли?
если да то так можно
Спасибо большое!!! Как часы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2014, 22:07
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru