Insert ordering and Recursive insertion

7

I would like to change the function to a recursive function, I'm wrong I tried it as well

1 se  n > 1  então    
2   Inserção-Rec (A, n−1)
3   x ← A[n]
4   i ← n−1
5   enquanto  i > 0  e  A[i] > x  faça
6   A[i+1] ← A[i]
7   i ← i−1
8   A[i+1] ← x

aqui só esta o pseudo código do que tenho que fazer pois o meu esta bem errado.

#include <stdlib.h>
#include <string.h>
#include <string.h>
#define N 1000

/*Ordenar crescente por inserção*/



int ordenacao_por_insercao(int v[], int n);

int main(){
  int v[N];
  int i, n;

   printf("Digite o tamanho do vetor :");
   scanf("%d", &n);

   for(i=0; i<n; i++){
    printf("digite o valor do v[%i] : ",i);
    scanf("%d", &v[i]);
   }
   for(i=0;i<n;i++){

   printf("\nVetor   V[%d] : %d",i,v[i]);
   }

   ordenacao_por_insercao(v,n);

  for(i=0;i<n;i++){

   printf("\n\nVetor ordenado  V[%d] : %d",i,v[i]);
   }
}

int ordenacao_por_insercao(int v[], int n){
    int j, i, chave;
    for(j = 0; j < n; j++){
        chave = v[j];
        i = j - 1;
        while(i >= 0 && v[i] > chave){
            v[i + 1] = v[i]; /*encontrar o ponto onde chave é
            inserido no subvetor ordenado*/
            i = i - 1;
        }
        v[i + 1] = chave; /*chave é inserido no subvetor
        ordenado*/
    }
    return v;
}

Note put the code here for other people who have problem with this first part see and try to understand! Thank you.

    
asked by anonymous 25.11.2015 / 06:50

1 answer

0
void ordenacao_por_insercao(int v[], int n){
    int  i, chave;
    if(n>1)
        ordenacao_por_insercao(v, n-1);

        chave = v[n];
        i = n - 1;
        while(i > 0 && v[i] > chave){
            v[i + 1] = v[i]; /*encontrar o ponto onde chave é
            inserido no subvetor ordenado*/
            i = i - 1;
             v[i + 1] = chave; /*chave é inserido no subvetor
        ordenado*/
        }

    }

I think this is what I would like to know now if this is the most efficient?

    
25.11.2015 / 07:02