Оценка сложности алгоритма поиска минимума

Какова сложность алгоритма поиска минимума в очереди, если при добавлении элемента я ищу минимальный элемент, при удалении, если элемент очереди равен минимальному, то удаляю его и опять ищу минимальный элемент, а в функции вывода минимального элемента просто вывожу минимальный элемент. Хотелось бы узнать оценку сложности алгоритма. Если есть ссылки на реализацию поиска минимума с использованием двух стеков, то просьба выложить их в комментах

typedef struct Queue {
    int size;
    int min;
    int *arr;
}Queue;

int findMin(Queue *q) {
    int min = 1000001;
    for (int i = 0; i < q->size; ++i) {
        if (q->arr[i] < min) {
            min = q->arr[i];
        }
    }
    return min;
}

void push(struct Queue *queue, int elem) {
    queue->size++;
    queue->arr  = (int *)realloc(queue->arr, queue->size);
    for (int i = queue->size; i > -1; --i) {
        queue->arr[i] = queue->arr[i-1];
    }
    queue->arr[0] = elem;
    queue->min = findMin(queue);
}

void pop(Queue *q) {
    if (q->arr[q->size-1]==q->min) {
        q->min = findMin(q);
    }

     q->size--;
     q->arr  = (int *)realloc(q->arr, q->size);
}

int showMin(Queue *q) {
    return q->min;
}

Ответы (0 шт):