Hacker News new | ask | show | jobs
by zoomablemind 1440 days ago
By the way, the TFA algo is equivalent to:

  for (i=0; i<n; ++i)
    for (j=0; j<(i ? i : n); ++j)
      if (a[i] < a[j])
        swap(a[i], a[j]);
Once the max has been swaped in, further inner iterations past i (the position of max) are redundant.

However, we can go even further:

  for (i=0; i<n; ++i)
    for (j=0; j<i; ++j)
      if (a[i] < a[j])
        swap(a[i], a[j]);
This dispenses with the explicit max swap and simply does progressive insertion.

Curiously, in such transformed form the algo echoes the 'selection sort' from my previous post, performs equivalently too (wrt ncmpr, nswp).