News for hackers. Stuff that matters.
Re:FreeBSD replaces bubblesort with mergesort on SYSINTs, re... by dkbrk on Monday August 21, 2023 @07:58PM (#37216880)
> there is never a good reason to use bubble sort

Not true. Bubble sort is excellent for sorting very small arrays.

See "Hoare’s Rebuttal and Bubble Sort’s Comeback (2020)" under "Fallback for sorting short arrays" and the performance results presented therein [0]. Discussion [1].

[0]: https://blog.reverberate.org/2020/05/29/hoares-rebuttal-bubb...

[1]: https://news.ycombinator.com/item?id=23363165

Re:FreeBSD replaces bubblesort with mergesort on SYSINTs, re... by kragen on Monday August 21, 2023 @08:55PM (#37217250)
remarkable, thank you

all of the bubble sorts i tried compiling in this thread ended up being compiled to code with either conditional branches or (on arm thumb-2) a couple of conditionalized stores. but conditional stores don't require a pipeline flush, and it is of course perfectly correct that insertion sort depends on its inner loop having an unpredictable branch to get better performance on almost-sorted data, which bubble sort does not

Re:FreeBSD replaces bubblesort with mergesort on SYSINTs, re... by kragen on Friday August 25, 2023 @06:41PM (#37267920)
after thinking about it some more, i was skeptical that this really implements bubble sort, but after trying it, it does

python version of the inner loop

    max_ = arr[0]
    for j in range(1, i):
        y = arr[j]
        arr[j - 1] = min(max_, y)
        max_ = max(max_, y)

    arr[i - 1] = max_
Re:FreeBSD replaces bubblesort with mergesort on SYSINTs, re... by basementcat on Monday August 21, 2023 @09:29PM (#37217498)
If you find yourself sorting small arrays, may I suggest a sorting network? https://en.m.wikipedia.org/wiki/Sorting_network