Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 22

Как привязать Шаблон к main() для поиска k-ой статистики

23.03.2015, 23:06. Показов 755. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
//дан массив mas длины n. Найти k-ую по величине порядковую статистику

//основная идея - использовать алгоритм быстрой сортировки
//сложность алгоритма: O(N), в отличии от сортировки

C++
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
 
template < class T>
 
int main()
{
    int n;
    cout << "Введите размерность: "; cin >> n;
    int *mas = new int[n];
    for (int i = 0; i < n; i++)
        cin >> mas[i];
 
    int k; cout << "Введите k-ый эл-т: "; cin >> k;
 
    system("pause");
    return 0;
}
 
template <class T>
T order_statistics(vector<T> a, unsigned n, unsigned k)
{
    unsigned l, r;
    using std::swap;
    for (l = 1, r = n;;)
    {
 
        if (r <= l + 1)
        {
            // текущая часть состоит из 1 или 2 элементов -
            //   легко можем найти ответ
            if (r == l + 1 && a[r] < a[l])
                swap(a[l], a[r]);
            return a[k];
        }
 
        // упорядочиваем a[l], a[l+1], a[r]
        unsigned mid = (l + r) >> 1;
        swap(a[mid], a[l + 1]);
        if (a[l] > a[r])
            swap(a[l], a[r]);
        if (a[l + 1] > a[r])
            swap(a[l + 1], a[r]);
        if (a[l] > a[l + 1])
            swap(a[l], a[l + 1]);
 
        // выполняем разделение
        // барьером является a[l+1], т.е. медиана среди a[l], a[l+1], a[r]
        unsigned
            i = l + 1,
            j = r;
        const T
            cur = a[l + 1];
        for (;;)
        {
            while (a[++i] < cur);
            while (a[--j] > cur);
            if (i > j)
                break;
            swap(a[i], a[j]);
        }
 
        // вставляем барьер
        a[l + 1] = a[j];
        a[j] = cur;
 
        // продолжаем работать в той части,
        //   которая должна содержать искомый элемент
        if (j >= k)
            r = j - 1;
        if (j <= k)
            l = i;
 
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2015, 23:06
Ответы с готовыми решениями:

Как назначить другой шаблон для результатов поиска?
Есть 2 шаблона: для главной и для остальных (внутренних) страниц. И есть поле поиска по сайту в шапке каждого шаблона. Необходимо чтобы...

Шаблон для main метода
Как быстро написать в Эклипсе public static void main ?

Как привязать шаблон сайта (photoshop) к phpstorm
Подскажите как привязать шаблон сайта созданный фотошопе к PhpShtorm?

3
Модератор
Эксперт С++
 Аватар для zss
13780 / 10973 / 6491
Регистрация: 18.12.2011
Сообщений: 29,259
24.03.2015, 07:01
Цитата Сообщение от egorikftp Посмотреть сообщение
template < class T>
int main()
main не может быть шаблоном!
0
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 22
24.03.2015, 09:44  [ТС]
Тогда как красиво привязать этот шаблон к main()?
0
Модератор
Эксперт С++
 Аватар для zss
13780 / 10973 / 6491
Регистрация: 18.12.2011
Сообщений: 29,259
24.03.2015, 11:22
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <class T>
T order_statistics(vector<T> a, unsigned n, unsigned k); 
 
int main()
{
    int n;
    cout << "Введите размерность: "; 
    cin >> n;
    vector<int> mas(n);
    for (int i = 0; i < n; i++)
        cin >> mas[i];
    int k; cout << "Введите k: "; cin >> k;
    int res=order_statistics(mas, n, k);
    cout<<res; 
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.03.2015, 11:22
Помогаю со студенческими работами здесь

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

Можно ли создать шаблон для поиска?
Меня интересует возможность создания шаблона для поиска:т.е. меня не устраивает наличае только ? и * в поисковой системе.У меня различные...

Шаблон поиска максимального элемента для многомерного массива
Вечер добрый, помогите разобраться с шаблонами в с++ Нужно найти максимальных элемент массива На просторах интернета нашел как сделать...

Нужно создать шаблон поиска ми значения для 2д массива
#include &lt;iostream&gt; using namespace std; template&lt;typename T&gt; T max(T** a, int n, int m) { T max = a; for (size_t i = 0; i &lt;...

Написать шаблон функции для поиска среднего арифметического массива
Написать шаблон функции для поиска среднего арифметического значений массива


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru