Построить алгоритм нахождения k-го наибольшего элемента в последовательности из n элементов - C (СИ)

  1. построить алгоритм нахождения k -го наибольшего элемента в последовательности из n элементов. Написать программу, реализующую этот алгоритм. Подсчитать сложность алгоритма. Я вот написал но почему то вылазят ошибки и не нравиться "mas"C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h> #include <stdlib.h>     int main () { int mas {1,2,3,4,5,6,7,8,9,20}; int max=0;   for (int i=0; i<10; i++) { if (max<=mas[i]) { max=mas[i]; } } printf ("max"); return 0;   }


textual

Код к задаче: «Построить алгоритм нахождения k-го наибольшего элемента в последовательности из n элементов - C (СИ)»

#include <stdio.h>
#include <stdlib.h>
 
int main() {
    int mas[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 20};
    int max = mas[0];
 
    for (int i = 1; i < 10; i++) {
        if (max < mas[i]) {
            max = mas[i];
        }
    }
    printf("max = %d\n", max);
    return 0;
}

СДЕЛАЙТЕ РЕПОСТ

15   голосов, оценка 3.933 из 5



Похожие ответы
  1. Нужно описать алгоритм этой программы. Написать, что делает каждая строка в этом коде. C1 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 printf("Введите время вылета и прилета с А в Б (hh:mm)\n");        for(i = 0; i < 4; i++)      {         scanf("%d:%d", &h[i], &m[i]);         t[i] = (h[i]*60 + m[i]);          if(h[i]>=24)        {         printf("Недопустимое значение\n");         system("pause");           return main();        }         if(m[i]>60)        {         printf("Недопустимое значение\n");         system("pause");           return main();         }         if (i==1)         {             printf("Введите время вылета и прилета с Б в А (hh:mm)\n");              continue;         }      }              if(t[0]>t[1])          t[1] += 24*60;          if(t[2]>t[3])          t[3] += 24*60;           r = fabs((double)(t[1] - t[0] + t[3] - t[2]) / 2+0.5);           rh = (r%(24*60)) / 60;         rm = r % 60;            printf("Время полета : %2.2d:%2.2d\n", rh, rm);          system("pause");         return main();

  1. Не получается разработать алгоритм вычисления значения переменной y по заданной формуле для вводимых значений переменных a, b и с. Алгоритм представить в виде программы для ЭВМ на алгоритмическом языке Си.

  1. Помогите написать программу в С. Найти наибольшую клику в заданном орграфе, используя алгоритм нахождения независимых множеств Сам метод: Клика Антиподом понятия независимого множества является понятие клики. Подмножество U вершин графа G называется кликой, если любые две входящие в него вершины смежны, т.е. если порожденный подграф G(U) является полным. Клика называется максимальной, если она не содержится в клике с большим числом вершин, и наибольшей, если число вершин в ней наибольшее среди всех клик. Число вершин в наибольшей клике графа G называется его плот-ностью (или кликовым числом) и обозначается через (G). Как и в случае независимых множеств, максимальная клика графа может оказаться не наибольшей. Понятие клики, в частности максимальной клики, используется в различных социологических теориях ( вопросы, связанные с голосованием, альянсами и т.п.), а также в теории игр. Очевидно следующее утверждение: подмножество вершин графа G является кликой тогда и только тогда, когда оно является независимым множеством в дополнительном графе G*. Вот то, что я начал писать:C1 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 #include #include   #define M 120   int n, g[M][M], f[M][M]; int main() {     printf("Vvedite n= %d", n);     for (int i = 0; i < n; i++)         for (int j = 0; j < n; j++)             printf("%d", g[i][j]);       scanf("%d", &n);     for (int i = 0; i < n; i++)         for (int j = 0; j < n; j++)             scanf("%d", &g[i][j]);       for (int i = 0; i < n; i++)         for (int j = 0; j < n; j++)             if (g[i][j] == 0)                 g[i][j] = 1;             else                 g[i][j] = 0;       for (int i = 0; i < n; i++)         for (int j = 0; j < n; j++)             printf(" %d \n", g[i][j]);       getch();       return 0; }

  1. Заинтересовал вопрос о различных реализациях алгоритма Евклида для неотрицательных целых чисел. Ниже привожу алгоритмы, собственноручно написанные, исходя из теоретического материала. Каждый алгоритм можно модифицировать в ту или иную сторону. Считается, что бинарный алгоритм работает быстрее, но мои тесты показывают, что два первых алгоритма работают быстрее бинарного. Может ли кто перепроверить на скорость на своих компиляторах, а то очень интересно и не видится никаких преимуществ бинарного алгоритма.C1 2 3 4 5 6 7 8 9 10 //обычный алгоритм Евклида через остатки long Nod(long a, long b) {     while (a && b)         if (a >= b)            a %= b;         else            b %= a;     return a | b; }C1 2 3 4 5 6 7 8 9 10 // Алгоритм Евклида через разности long Nod(long a, long b) {     while (a && b)         if (a >= b)            a -= b;         else            b -= a;     return a | b; }C1 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 // Бинарный алгоритм Евклида long Nod(long a, long b) {     long deg = 0;     if (a == 0 || b == 0)         return a | b;     while (((a | b) & 1) == 0)     {         deg++;         a >>= 1;         b >>= 1;     }     while (a && b)     {         if (b & 1)             while ((a & 1) == 0)                 a >>= 1;         else             while ((b & 1) == 0)                 b >>= 1;         if (a >= b)             a = (a - b) >> 1;         else             b = (b - a) >> 1;     }     return ((a | b) << deg); }Еще один бинарный алгоритм, но он самый медленный из всех предыдущих.C1 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 long Nod(long a, long b) {     long buf, deg = 0;     if (a == 0 || b == 0)         return a | b;     while (((a | b) & 1) == 0)     {         deg++;         a >>= 1;         b >>= 1;     }     if (a)         while ((a & 1) == 0)             a >>= 1;     while (b)     {         while ((b & 1) == 0)             b >>= 1;         if (a < b)             b -= a;         else         {             buf = a - b;             a = b;             b = buf;         }         b >>= 1;     }     return (a << deg); }

  1. Составить алгоритм и программу сортировки элементов двумерного квадратного массива размером N (N> 5) по указанным правилам. (Стрелка указывает направление от меньшего к большему элемента). Сначала , думаю, стоит диагональ перевести в одномерный массив и отсортировать его. Потом занести обратно в массив 2-мерный. 2) Начать сортировать в таком порядке : (см. рисунок) Вот так думал решать, и вродь правильно, а отразить в коде не получается.

  1. Построить таблицу значений для функции. Очень интересует, как правильно ввести F(x)=... Спасибо!

  1. Принц нашел 4 волшебных палочки длины которых a, b, c, d. Ему требуется построить треугольник с наибольшим периметром. Задача: определть из каких палочек(т.е. какой длины) принц должен построить треугольник Ввод данных с клавиатуры вводятся 4 положительных числа через пробел a, b, c ,d которые обозначают длины палочек Вывод на экран длин палочек из которых можно постройть треугольник с максимальным периметром в алфавитном порядке перечисления их длин через пробел. Если треугольник нельзя построить то вывести сообщение "NO"

  1. Добрый день! Помогите, пожалуйста, новичку написать программу. Никак не могу понять, как составить условия.

  1. Доброго времени суток, дамы и господа! Может-ли кто-нибудь подсказать в какую сторону мне копать? Я новичок. И так, задание. Реализовать проверку валидности карт по вводу 15-16-ти значного номера за алгоритмом луна для AMEX, MasterCard и Visa. Т.е. пользователь вводит номер, а ему пишут чья это карта и валидна-ли она за этим алгоритмом. В обшем, т.к. я новичок, то я просто не знаю с чего мне начать. Подскажите, а?