Sorting/some_sorts.c
// Merge-sort implementado em Linguagem C sobre um vetor.
Merge-sort implementado em Linguagem C sobre um vetor.
Merge - sort implementado em Linguagem C sobre um vetor .
void merge(int v[], int e,int d){
    int i, j, k, metade, *vetTemp;
    if(e == d) return;
    metade = (e+d)/2;
    merge(v,e, metade);
    merge(v,metade+1,d);
    i = e;
    j = metade+1;
    k = 0;
    vetTemp = (int*) malloc(sizeof(int) * (d - e +1));
    for (; i < metade+1 || j < d+1;){
        if (i==metade+1){
            vetTemp[k]=v[j];
            j++;
            k++;
        } else {
            if (j==d+1){
                vetTemp[k] = v[i];
                i++;
                k++;
            } else {
                if (v[i] < v[j]) {
                    vetTemp[k] = v[i];
                    i++;
                    k++;
                } else {
                    vetTemp[k] = v[j];
                    j++;
                    k++;
                }
            }
        }
    }
    for (i=e; i<=d; i++){
        v[i] = vetTemp[i-e];
    }
    free(vetTemp);	
}
void merge ( int v [ ] , int e , int d ) { int i , j , k , metade , * vetTemp ; if ( e == d ) return ; metade = ( e + d ) / 2 ; merge ( v , e , metade ) ; merge ( v , metade + 1 , d ) ; i = e ; j = metade + 1 ; k = 0 ; vetTemp = ( int * ) malloc ( sizeof ( int ) * ( d - e + 1 ) ) ; for ( ; i < metade + 1 || j < d + 1 ; ) { if ( i == metade + 1 ) { vetTemp [ k ] = v [ j ] ; j ++ ; k ++ ; } else { if ( j == d + 1 ) { vetTemp [ k ] = v [ i ] ; i ++ ; k ++ ; } else { if ( v [ i ] < v [ j ] ) { vetTemp [ k ] = v [ i ] ; i ++ ; k ++ ; } else { vetTemp [ k ] = v [ j ] ; j ++ ; k ++ ; } } } } for ( i = e ; i <= d ; i ++ ) { v [ i ] = vetTemp [ i - e ] ; } free ( vetTemp ) ; }
Merge-sort implementado em Linguagem C sobre um vetor.
Merge - sort implementado em Linguagem C sobre um vetor .
// lidando com vet temp.