A class of sorting algorithms based on Quicksort
Communications of the ACM - Lecture notes in computer science Vol. 174
Introduction to algorithms
Parallel algorithms for merging and sorting
Information Sciences: an International Journal
A survey of adaptive sorting algorithms
ACM Computing Surveys (CSUR)
Computational geometry: algorithms and applications
Computational geometry: algorithms and applications
Quicksort algorithms with an early exit for sorted subfiles
CSC '87 Proceedings of the 15th annual conference on Computer Science
Communications of the ACM
Best sorting algorithm for nearly sorted lists
Communications of the ACM
Increasing the efficiency of quicksort
Communications of the ACM
Algorithm 347: an efficient algorithm for sorting with minimal storage [M1]
Communications of the ACM
Communications of the ACM
Information Sciences—Applications: An International Journal
Asymptotic analysis of an optimized quicksort algorithm
Information Processing Letters
A fast algorithm for constructing approximate medial axis of polygons, using Steiner points
Advances in Engineering Software
Increasing the efficiency of quicksort using a neural network based algorithm selection model
Information Sciences: an International Journal
Hi-index | 0.00 |
Quicksort is usually the best practical choice for sorting because it is, on average, remarkably efficient. Unfortunately, this popular algorithm has a significant drawback: the slowest performance is obtained in the simplest cases when input data are already initially sorted or only a slight perturbation occurs. In this paper, we propose a combination of quicksort and a new algorithm, which shows excellent time performance in sorting such crucial data arrays, and which is not much slower than quicksort in random cases. Our work was inspired by problems met when sorting polygon vertices in the sweep-line algorithms of computational geometry and, therefore, we have named the new algorithm 'vertex sort'. It splits the input array into three sub-arrays. Two of them are already sorted, and the third one is handled iteratively. A simple test decides whether to continue recursively with vertex sort or to employ quicksort in the second iteration. In this way, we achieve a situation where the worst case time complexity does not exceed the running times of quicksort, but the simplest cases are handled much faster (in linear time) than random cases. We have named the combined algorithm "smart quicksort' because of this desired property. In the last part of the paper, we prove its efficiency by employing it in a well-known sweep-line-based polygon triangulation algorithm.