• scrion@lemmy.world
      link
      fedilink
      arrow-up
      72
      ·
      19 hours ago

      The output is sorted due to the fact that for each number, a timer is started that prints out the number after waiting a number of milliseconds equal to said number.

      Therefore, 1 is printed first after delaying for 1 millisecond, 5 is printed second after 5 milliseconds etc.

      • ptu@sopuli.xyz
        link
        fedilink
        arrow-up
        4
        ·
        6 hours ago

        So all items in the array are launched simultaneuously and ran in parallel instead of sequentially?

        • scrion@lemmy.world
          link
          fedilink
          arrow-up
          2
          ·
          4 hours ago

          They are launched sequentially, but run simultaneously, yes - at least some of them. And they run concurrently but not in parallel - using a single execution context, there is only a single thread, so no parallelism exist.

          • ptu@sopuli.xyz
            link
            fedilink
            arrow-up
            1
            ·
            3 hours ago

            I see, I was only aware of sleep but that makes sense. Thanks for your insight.

    • theunknownmuncher@lemmy.world
      link
      fedilink
      arrow-up
      21
      ·
      edit-2
      19 hours ago

      The program goes through the collection of numbers and prints each one after a delay of milliseconds equal to that number: “Print the number 20 after a 20 millisecond delay. Print the number 5 after a 5 millisecond delay. Print the number 100 after a 100 millisecond delay… etc…” effectively sorting the collection because the numbers will be printed in order from smallest to largest.

      This is a clever (but impractical) way to sort a collection, because it does not require comparing any of the elements of the collection.