0

I have an assignment to envision and calculate the possible effects the implementation of a general sorting algorithm that is O(n) time and O(1) space ( assuming general case ) would have on computation and society.

In order to do that, I am trying to estimate how much computation time computers in server farms spend on sorting, and what general orders of magnitude the lengths of lists being sorted fall in. Server farms seem to be the most impactful area to analyze for pertinent effects, but if there are some other areas that people would expect to see an outsize effect, I would appreciate them being called out.

I can then present sets of assumptions with the "new" algorithm being faster at sorting lists at such a length and larger and how much faster than the current state of the art. eg. "If the new algorithm is even with the state of the art for lists of 500 billion items, and increases in time with "n" while the soa increases in time with "log n", and 1/2 trillion item and larger sorts take X% of server-farm computation, you could expect to see computation time for the same tasks reduced by order of magnitude Y%". Once I can get some firm numbers ( not the question here ) on how much electricity server farms use, then I can also electricity usage cost comparisons.

When I researched on the web, I found that an O(n)/O(1) sorting algorithm is considered theoretically possible, but undiscovered to this point. I suspect that there might not be much impact on computation, because there seems to be no incentives put out for someone to come up with such an algorithm ( or a proof that it cannot exist ).

What is a the fastest sorting algorithm for an array of integers? https://en.wikipedia.org/wiki/Sorting_algorithm http://staff.ustc.edu.cn/~csli/graduate/algorithms/book6/chap09.htm#:~:text=We%20have%20now%20introduced%20several,quicksort%20achieves%20it%20on%20average

I have presumed that sorting algorithms in general use, at least for large lists like web search results, are O(n log n) time and O(1) space as a general matter of course. If this is in error, please point it out!

My apologies if this forum is not appropriate for this kind of question. In that case, I would ask for pointers on where I should go with this question.

Thank you.

Kyle
  • 1
  • 1
  • researched on the web, I found that the web knows everything, right *and* wrong. Please specify or at least quote&attribute your sources. Note that $O(n)$ ordering requires an $O(1)$ operation to establish order between a limited number of items. Think about string comparison. – greybeard Jun 27 '20 at 03:58
  • https://cs.stackexchange.com/questions/18536/what-is-a-the-fastest-sorting-algorithm-for-an-array-of-integers

  • https://en.wikipedia.org/wiki/Sorting_algorithm

  • http://staff.ustc.edu.cn/~csli/graduate/algorithms/book6/chap09.htm#:~:text=We%20have%20now%20introduced%20several,quicksort%20achieves%20it%20on%20average.

  • Citing sources is something I should have done in the original post; my apologies.

    – Kyle Jun 29 '20 at 21:29
  • Thank you for supplying the references - improving what begs improvement is the way to go. Note that you can(should!) edit your post(s). – greybeard Jun 30 '20 at 03:02
  • (Actual time of sorting used to be an issue when CPU was rented by the minute and tape drives needed operators requiring wages…) – greybeard Jun 30 '20 at 03:04
  • You should specify the sorting model you are using. It is NOT possible to have a comparison-based sorting algorithm with a running time smaller than $\Omega(n \log n)$ (i.e., any algorithm that requires $o(n \log n)$ time cannot be correct for sufficiently large inputs since it cannot possibly output all $n!$ permutations of an input sequence with $n$ elements). Linear-time sorting algorithms for other models/assumptions on the collection of elements to sort are known (see, e.g., counting sort and radix sort in the case of polynomially bounded integers). – Steven Jul 24 '20 at 01:32
  • IMO, finding any reliable statistics about what computers are used for is an impossible task. Even telling the average idle time seems quite challenging. I see no way to address your question quantitatively. –  Apr 11 '23 at 09:35
  • Typical database sizes are 100 MB (very grossly). If we assume 100 bytes entries, that makes 1 million entries, and the factor $\log n$ being $20$. But as said by @gnasher729, databases are rarely sorted. So if you arbitrarily assume that sorting represents $5%$ of computer activity (which is certainly overstated), you would reduce the computer consumption by $4.75%$, hence the worldly consumption of electricity by $0.475%$. –  Apr 11 '23 at 09:50