Programação Imperativa

100 Questões Fichas Testes/Exames

Questão 26: insere

Voltar

Defina uma função void insere (int v[], int N, int x) que insere um elemento (x) num vetor ordenado. Assuma que as N primeiras posições do vetor estão ordenadas e que por isso, após a inserção, o vetor terá as primeiras N+1 posições ordenadas.

Exemplo

> int v[5] = {1,2,4,5};
> insere(v, 4, 3);
> v
(int [5]) {1, 2, 3, 4, 5}

Resolução

void insere (int v[], int N, int x) {
    int i, j, inserted = 0;
    for(i = 0; i < N && !inserted; i++) {
        if(x < v[i]) {
            for(j = N; j > i; j--) {
                v[j] = v[j - 1];
            }
            v[i] = x;
            inserted = 1;
        }
    }
    if(!inserted) v[N] = x;
}