Starting from:

$25

CS590- Homework 1- C++  & Running Times Solved

You       are       given    an        integer vector   which   is          represented      by        int*      an        array    of         integers            and      its dimension        m         as         a          separate           parameter.       We       are       interested         in         sorting  arrays   of         integer vectors according         to         a          pre-defined      notion  of         vector   length.  You      therefore          are       given    the       function ivector_length(v,           m)        that      computes         and      returns the       length  of         vector   v          with     dimension        m         as         

           

You       are       given    a          naive    (and     very      inefficient)        implementation            of         insertion           sort      for        arrays   ofintegervectors.

           

           

Questions         (100     points)

           

1.              Develop            an        improved          implementation            of         insertion           sort      for        integer vector   (insertion_sort_im)        that            precomputes    the       length  of         each     vector   before  the       sorting. Keep    in         mind    that      the       vectors are       sorted            according         to         their     length  (see      ivector_length   function).         You      can       test      the       correctness       of         your            sorting  algorithm         using    the       provided           check_sorted    function.          

           

2.              Implement        a          merge  sort      for        an        array    of         integer vectors. As        for        the       improved          insertion           sort            algorithm,         you      should  precompute      the       length  of         the       vectors before  the       sorting  and      the       sorting  is          done            according         to         the       vector   length.  Test      the       correctness       of         your     merge  sort      implementation            using    the            provided           check_sorted    function.          

           

3.              Measure           the       runtime            performance     of         insertion           sort      (naive   and      improved)         and      merge  sort      for            random,           sorted, and      inverse sorted  inputs   of         size      n          =          10000;  25000;  50000;  100000;            250000;            500000;            1000000;          2500000           and      vector   dimension        m         =          10;       25;       50.       You      can       use       the            provided           functions          create_random_ivector, create_sorted_ivector,  create   reverse_sorted_ivector.            

Repeat  each     test      a          number of         times    (usually at         least     10        times)   and      compute           the       average running time     for each     combination     of         algorithm,         input,   and      size      n.         Report  and      comment          on        your     results.

           

Remarks:         

•       You      might   have     to         adjust   the       value    for        n          depending        on        your     computers        speed,  but       allow    each            test      to         take      up        to         a          couple  of         minutes.          

•       Start     with     smaller values   of         n          and      m         and      stop     if          one      instance           of         the       algorithm         takes            more    than     10        min      to         complete          (the      insertion           sort      implementations           will       hit        that      limit            early     on).     

•       Report  and      comment          means  that      you      have     to         analyze and      interpret           your     findings properly.          What    do            the       experiments     tell       you?    

•       The      programming,   testing  and      the       experimentation           will       take      some    time.    Start     early.   

•       Feel      free      to         use       the       provided           source  code     for        your     implementation.           You      have     to         document            your     code.   

More products