Vissza

Labor 3

Algoritmusok helyigénye


Feladatok:

1. Egy N és egy M elemű tömböt töltsünk fel vétlenszerű számokkal, ahol legyen N>M. Rendezzük mindkét tömböt a köyvtáfüggvény qsort-al, majd fésüljük össze a két tömb elemeit. Az összefésüléshez használjunk egyszer 2·(N+M) memóriát, majd fokozatosan javítsuk ezt, egyszer 2·N+M, majd N+2·M memóriát használva. Használjuk a realloc könyvtárfüggvényt.

Az alábbi forráskód 0 végjelig olsav be számokat és a realloc könyvtárfüggvény segítségével mindegyre helyet foglal:
#include <stdio.h>
#include <stdlib.h>

int main() {
    int number, i, n = 0;
    int * p_number = NULL;
    while(1){
        printf ("Kerek egy egesz szamot (0 a vegjel): ");
        scanf ("%i", &number);
        if(number == 0) break;
        n++;
        p_number = (int*) realloc (p_number, n * sizeof(int));
        p_number[n-1] = number;
    }
    printf ("A beolvasott szamok: ");
    for (i=0; i<n; i++) printf ("%i ",p_number[i]);
    printf("\n");
    free (p_number);
    return 1;
}