A killer adversary for quicksort

@article{McIlroy1999AKA,
  title={A killer adversary for quicksort},
  author={M. Douglas McIlroy},
  journal={Software: Practice and Experience},
  year={1999},
  volume={29}
}
  • M. McIlroy
  • Published 10 April 1999
  • Computer Science
  • Software: Practice and Experience
Quicksort can be made to go quadratic by constructing input on‐the‐fly in response to the sequence of items compared. The technique is illustrated by a specific adversary for the standard C qsort function. The general method works against any implementation of quicksort – even a randomizing one – that satisfies certain very mild and realistic assumptions. Copyright © 1999 John Wiley & Sons, Ltd. 

Efficient Non-Quadratic Quick Sort (NQQuickSort)

The algorithm and its runtime behavior are discussed in detail and the performance of NQQuicksort is faster than quicksort as well as the fastest variant of radix sorting algorithms; the Least Significant Digit (LSD) radix sort.

The Power of Evil Choices in Bloom Filters

This work constructs adversary models for Bloom filters and illustrates attacks on three applications, namely SCRAPY web spider, BITLY DABLOOMS spam filter and SQUID cache proxy and proposes several other countermeasures to mitigate the attacks.

Hyper-quicksort: energy efficient sorting via the Templar framework for Template Method Hyper-heuristics

Generative hyper-heuristics are used to improve upon human-designed algorithms, but human ingenuity already provides a vast repertoire of specialized algorithms, usually with known asymptotic behaviour.

Triple State QuickSort, A replacement for the C/C++ library qsort

An industrial grade Quicksort function along with its new algorithm, which is meant as a replacement for the C/C++ library qsort().

Vectorized and performance‐portable quicksort

The proposed vqsort algorithm integrates into the state‐of‐the‐art parallel sorter ips4o$$ ip{s}^4o $$, with a geometric mean speedup of 1.59, and is the fastest sort for large arrays of non‐tuple keys on CPUs, up to 20 times as fast as the sorting algorithms implemented in standard libraries.

Finding a Fast Quicksort Implementation for Java

In the average case, quicksort is a speedy ( log ) O n n .

Experiments for Algorithm Engineering

A highly tuned version of the Quicksort algorithm was implemented in the Unix system’s main memory sort function, qsort, for two decades, and performed admirably.

Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential

This dissertation conducts a mathematical average-case analysis of multiway Quicksort including the important optimization to choose pivots from a sample of the input and proposes a parametric template algorithm that covers all practically relevant partitioning methods as special cases, and analytically investigates in depth what effect the parameters of the generic quicksort have on its performance.

Remote Algorithmic Complexity Attacks against Randomized Hash Tables

This work demonstrates how the attacker can defeat this protection of per-connection state in a hash table, and demonstrates how to discover this secret value, and to do so remotely, using network traffic.

Algorithmic attacks and timing leaks in distributed systems

This thesis analyzes the opportunities for determining a party’s secret by analyzing processing time remotely over the Internet and defines a new class of attacks that perform a remote denial of service by deliberately choo sing inputs to make common algorithms slow.
...

References

SHOWING 1-4 OF 4 REFERENCES

Engineering a sort function

A new qsortfunction for a C library that chooses partitioning elements by a new sampling scheme; it partitions by a novel solution to Dijkstra's Dutch National Flag problem; and it swaps efficiently.

Algorithms and data structures - design, correctness, analysis

This book presents complete and carefully tested Eiffel implementations with many attractive examples, diagrams and exercises, including object-oriented programming techniques.

Algorithms in C

Algorithms in C is a comprehensive repository of algorithms, complete with code, with extensive treatment of searching and advanced data structures, sorting, string processing, computational geometry, graph problems, and mathematical algorithms.

Engineering a sort functi on’, Software–Practice and Experience

  • 1993