Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

  1. We need some data to use for our timing experiments. Write a function up: nat -> (list-of nat) which constructs a list of naturals starting with 0 in ascending order or retrieve it from a previous lab. For example, (up 7) returns (list 0 1 2 3 4 5 6). You can probably write it faster using build-list that you can retrieve it. Similarly, write a function down: nat -> (list-of nat) that constructs a list of naturals ending in 0 in descending order. For example, (nums-down 7) returns (list 6 5 4 3 2 1 0).
  2. Now write a function
    Code Block
    rands
    Wiki Markup
    that constructs a list of random numbers in the range from {{0}} to {{32767}}. To create a single random number in the range from {{0}} to {{{_}n{_}}}, compute {{(random}} {{{_}n+1{_}{}}}{{)}}. For larger numbers in the range {{\[0, 32768)}}, try:
    Code Block
    (define max-rand 32768)
    (random max-rand)         ; random is built-in
    
    Note: random is a function in the Scheme library, but it is not a mathematical function, since the output is not determined by the input.
  3. Make sure you know how to use time by using it to time isort on a list of 200 elements. Run the exact same expression again a couple times. Note that the time varies some. We typically deal with such variation by taking the average of several runs. The variation is caused by a number of low-level hardware phenomena that are beyond the scope of this course (see ELEC 220 and COMP 221).
  4. Use the time operation to fill in the following chart.

     

     

    input size

    input size

    input size

     

     

    200

    1000

    5000

     

    up

     

     

     

    isort

    down

     

     

     

     

    rand

     

     

     

     

    up

     

     

     

    qsort

    down

     

     

     

     

    rand

     

     

     

    When you are done, compare your results with those generated by other pairs in the lab.

...