Giter Site home page Giter Site logo

scandum / crumsort Goto Github PK

View Code? Open in Web Editor NEW
315.0 6.0 8.0 3.57 MB

A branchless unstable quicksort / mergesort that is highly adaptive.

License: The Unlicense

C 100.00%
pdqsort quadsort quicksort sorting adaptive c in-place inplace quick sort

crumsort's People

Contributors

scandum avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

crumsort's Issues

Discussion

Moving crumsort-related commentary from here (for anyone following along, this issue has some previous discussion).

I got distcrum to maintain candidates so it can augment them from one step to the next. The switch to a more accurate count with a square root approximation was a significant speedup, and even improves on median_of_twentyfive (so I removed it; maybe median of 15 could still be useful). After that the candidate-maintaining version is about the same, but only because I'm stuck sorting all candidates instead of sorting the new ones then merging. The commented out blit_merge_block call, with cnt rather than cnt + npiv in the quadsort before it, causes segfaults. partial_backward_merge doesn't seem to have the same problem, but of course with large enough arrays it tries to use more swap space than there is, and also segfaults.

Can't be compiled as C++

The latest version of crumsort can't be compiled as C++ code because it the main entry function takes a VAR* but should rather take a void* and then cast that in the body.

Meta algorithm

Noob question, end users would love a solution that is optimal in all cases.
As such, couldn't you detect cases where pdqsort or fluxsort are expected to be optimal and switch to them at runtime automatically ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.