54 views

Uploaded by cockdacrjjkl

Histogram sort

- Mathcad
- Java- Android, FileOutputStream, ByteArrayInputStream, ByteArrayOutputStream.
- BSC6910 GSM V100R015ENGC00SPC500 Performance Counter List
- CS301 Notes
- M.E. Data Structures Lab
- C++ OOP Practice Questions 2
- 37163662 Nestlle Project HRM Project
- Searching , sorting
- DAA QB 1.pdf
- Find the Longest Word With a For
- 47 Practice Final Solutions
- hash_function.pdf
- datastructure
- sort
- hw1
- DataStructure Practicals
- Maths for It 5 n 18396 Resource List
- Query to Retrieve 1
- Algorithm
- M255_week9_tutor_v2

You are on page 1of 4

by Marion McCoskey

Thursday, February 04, 1999

I have discovered a general-purpose, single 3. Unlike the Quick Sort the Histogram

buffered sorting algorithm that is faster than Sort does not suffer performance

Quick Sort and insensitive to the distribution degradation on some orderings of data.

and ordering of the data to be sorted. On systems without caching, the

Histogram Sort should take the same

The Histogram Sort has other advantages in

time, no matter what the original order.

addition to being faster and more stable:

On systems with caching, the Histogram

1. A part of the data is completely sorted Sort is slightly faster on data sets that

before the entire sort is complete. are more nearly sorted.

There are at least two ways this

4. The histogram algorithm is amenable to

property of the Histogram Sort can be

hardware acceleration. The Quick Sort

used to advantage.

has been known for decades. Existing

a) One processor can pass completely hardware has been designed with the

sorted data to another processor idea that a processor that runs Quick

while the rest of the data set Sort faster has a competitive advantage.

remains partially sorted. The Histogram Sort allows re-thinking of

some of our basic assumptions about

b) A percentile-based subset of the the design of computer hardware

data can be sorted, and the rest left

partially sorted. This can

result in a speed increase Lines Bubble Shell Quick Histogram

of several hundred percent

2900 40.7 3.3 0.0 0.0

over a complete sort.

Queries such as: “Who are 5899 186.8 11.0 0.6 0.5

the top 10 salespeople of 11799 790.4 29.7 1.1 0.0

XYZ Corporation?”or “List 23375 86.8 2.2 0.5

20 people who make 47036 390.0 4.9 1.7

median salaries at XYZ 93726 1357.7 12.1 3.9

Corporation.”Don’t require

187314 26.9 9.4

that the entire record set be

sorted with the Histogram 375290 59.4 20.4

Sort. 749546 134.6 44.5

1499580 296.6 94.0

2. The integrated histograms

generated during the sort 2999883 637.6 190.1

process can also be used as Figure One

hash tables to speed up the

search part of a search and sort Figure One shows benchmarks for the

procedure such as that required by bubble sort, shell sort, Quick Sort, and

compilers, assemblers, interpreters, and single buffered Histogram Sort on randomly-

data base joins. ordered, zero-terminated strings. The

strings are limited to the 26 English letters

and the 10 numerals and the sorts are all

case-insensitive. This requires only a

histogram of 37 entries. One is required for

the zero-termination of the strings.

©1999 Marion McCoskey, 2122 Elm Street, Chico, CA 95928, (530) 892-8403

The data in Figure One shows the software So I filed a patent on a sort method I called

implementation of the Histogram Sort in a the Histogram Sort. I recently discovered

slightly better light than strings with more that the basic principle of the Histogram Sort

kinds of characters would, but many string is already well known as the count sort, but

sorts are carried on with reduced character the way I applied that principle is apparently

sets, in essence wasting processor capacity novel, and better in many ways than the way

for characters that are not used. In a the count sort principle is traditionally

hardware accelerated version of the applied.

Histogram Sort, histogram size would matter

The basic count sort is very efficient, but for

far less, if at all.

practical problems it would require

prohibitively large histograms. The

Lines Qsort qSort Bubble qSort conventional method of

decomposing the algorithm is the

Worst Sort Worst/Best Radix Sort. The Histogram Sort

Case Ratio differs from the Radix Sort in the

1000 0.0 1.6 3.3 method used to apply the basic

2000 0.0 6.6 15.9 count sort algorithm to large

4000 0.6 30.7 77.4 51.2 problems.

8000 0.6 121.9 345.5 203.2 The method I described in my

16000 1.6 426.8 1440.1 266.8 patent was a double-buffered

32000 3.3 1405.0 5922.6 425.8 method, but I have recently

64000 7.2 5159.1 716.5 managed to make a slight variation

on the algorithm and execute the

Figure Two sort in a single buffer. For

intellectual property reasons, I am

Even though it was the world’s fastest unable to discuss details of the single

single-buffered sort on most data, the Quick buffered version of my algorithm here, but I

Sort has a major drawback which is will present some benchmarks. I can also

illustrated in the Figure Two. In a naïve say that the single-buffered version requires

implementation of the Quick Sort, worst a data structure other than the nested

case performance occurs on already sorted histograms, but this data structure is small

data. Practical Quick Sorts work around this and it is not proportional to the size of the

problem by putting in a couple of lines which data to be sorted. It turns out that the single

make the worst case performance occur on buffered method is actually a little faster

a data ordering that is unlikely to be than the double buffered method. I have

encountered, but any probability greater coded both variable-length string, and fixed -

than zero is troublesome in many situations length numerical versions of the single

making the Quick Sort unsuitable for some buffered algorithm. I am including a source

applications, despite its speed. listing for a double-buffered numerical

One day while writing a program for my Histogram Sort with this package.

hobby of studying esoteric musical scales, I The Histogram Sort makes first pass

needed a sort. Following my usual practice, counting data items that fall into a primary

I wrote a shell sort, but it was slow enough region determined by the most significant

that it gave a noticeable delay to the bits of their keys. Then the data items are

program I was writing. To speed up that distributed according to these key bits, and

sort, I used a hashing method only the histogram is saved. In a string

applicable to that particular situation. implementation, all the strings that start with

It occurred to me that it would be wonderful “a”are put in one primary region, all the

if there was a general purpose hash function strings that start with “b”are put in another

that could speed up all sorts, and that an primary region, etc. The first two elements

integrated histogram was just such a of the integrated histogram define the start

function. and end of the first region which would

contain all the strings starting with “a”, for

example.

Single Buffered Histogram Sort – Page 2

©1999 Marion McCoskey, 2122 Elm Street, Chico, CA 95928, (530) 892-8403

Figure Three, Sort Benchmarks

1600.0

1400.0

1200.0 Bubble

Seconds

1000.0 Shell

800.0

600.0 Quick

400.0 H istogram

200.0

0.0

Lines

Next this first “a”region is divided into a A hardware accelerator would use special

number of smaller secondary regions by a histogram memory that could be cleared in a

process like that applied to the entire data single clock pulse. This memory would have

set, except the subsequently significant key all the clear inputs of the memory registers

bits are used to create the second nested connected to a single signal, thus nearly

histogram. All the strings starting with “aa” eliminating the time it takes to clear a

are put in one region, and the strings histogram.

starting with “ab”are put in another region.

The hardware accelerator would also use a

This process is repeated using less

priority encoder to go directly to a histogram

significant bits for each iteration until the

entry containing data, taking just a few gate

entire first primary region is sorted. Then

delays to skip over any number of histogram

the process is applied to subsequent

entries that do not require processing.

primary regions until all the data is sorted.

There are other techniques that are already

The Histogram Sort is easily adapted to

well know such as zero overhead loops and

sorting arrays of pointers to zero terminated

data pre-fetch that could also be applied to

strings. Such an adaptation for the straight

reduce the Histogram Sort run time in a sort

Radix Sort would be very difficult.

coprocessor.

My patent application describes a method of

When implementing the Histogram Sort in

hardware acceleration for the Histogram

software the sparse histogram problem can

Sort that should make it by far the fastest

be ameliorated by simply sorting small

sorting algorithm on the planet.

partitions with some other method.

Without hardware acceleration, the

You can get more information about the

Histogram Sort algorithm becomes less

Histogram Sort by sending e-mail to

efficient than other algorithms for sorting

mckyyy@aol.com.

small data sets which produce extremely

sparse histograms. This is because it must

clear each histogram before it is used, and

then process all the entries in each

histogram. Thus it may be clearing

histogram elements that are not useful in the

sorting process, and then checking all these

elements to see if they contain data.

©1999 Marion McCoskey, 2122 Elm Street, Chico, CA 95928, (530) 892-8403

Comparison between the Straight Radix Sort and the Histogram Sort

The Straight Radix Sort is described in the book “Algorithms” by Robert Sedgewick

Radix Sort Histogram Sort Comment

Double Single or double Double buffering requires twice as much RAM. If the data

buffered only buffered set is large enough to require disk access, this can be a

major performance problem.

Does not Partitions data All bits of all data items have to be processed if there is no

partition data partitioning. With partitioning different sorting strategies

can be applied to different partitions according to their

size, which is known in advance.

Uses only one Uses nested Nested histograms require more storage, but the

histogram histograms requirement is very small compared to the size of the data

to be sorted.

Does most Does least Doing the least significant bits first means that the data

significant bits significant bits first remains completely unsorted until the last pass. Doing the

first most significant bits first means that it is only necessary to

process enough data bits in any particular item to

distinguish it from all the other items in the data set, and

completely sorted data becomes available before the

entire sort is complete.

Extremely Easily applied to Starting with the least significant bits makes applying the

difficult to apply variable length straight Radix Sort to variable length strings extremely

to variable data. difficult.

length data.

Figure Four

In his book “Algorithms”, Robert Sedgewick Sorting is very important in computer

presents two Radix Sorting methods; a science. It has been estimated that as much

single buffered method he calls the “radix as 25% of all computer time is spent in

exchange sort”, and a double-buffered sorting, with the proportion going up for

method he calls the “straight Radix Sort”. larger and more expensive machines doing

database work and compiling large

The single-buffered

programs.

radix exchange sort Lines Two One Quick

Sedgewick describes A general purpose

bears little

Buffers Buffer Sort sorting algorithm that

relationship to the Histogram Sort is fast and insensitive

Histogram Sort 125000 1.7 1.1 1.6 to the distribution

described in my 250000 2.8 1.6 3.3 and ordering of the

patent. 500000 4.9 4.4 6.6 data to be sorted. Is

1000000 11.6 9.4 14.3 an important

As seen in Figure

2000000 24.2 21.5 30.7 development.

Five, the speed

advantage of the 4000000 48.9 45.6 67.5

numerical Histogram 8000000 96.1 78.0 140.6

Sort is not as great Figure Five

as with the string

sort.

Serious consideration should be given to embedding the Histogram Sort algorithm into a

hardware accelerator and making it an industry standard. Not only would machine time be saved

in the sort process, but programmer/analyst time would be saved in the code generation process.

©1999 Marion McCoskey, 2122 Elm Street, Chico, CA 95928, (530) 892-8403

- MathcadUploaded byCatea Raia Negru
- Java- Android, FileOutputStream, ByteArrayInputStream, ByteArrayOutputStream.Uploaded byKaran Trehan
- BSC6910 GSM V100R015ENGC00SPC500 Performance Counter ListUploaded bytinerete_
- CS301 NotesUploaded byRizwanIlyas
- M.E. Data Structures LabUploaded byDharma Lingam
- C++ OOP Practice Questions 2Uploaded byzainzahid99
- 37163662 Nestlle Project HRM ProjectUploaded byMuddasir Khan
- Searching , sortingUploaded byPurushothama Reddy
- DAA QB 1.pdfUploaded bySruthy Sasi
- Find the Longest Word With a ForUploaded byDaniel Gomes
- 47 Practice Final SolutionsUploaded byelibun
- hash_function.pdfUploaded bytjny699
- datastructureUploaded byRejithaVijayachandran
- sortUploaded byVarun Pratap Singh
- hw1Uploaded byManaswi Gupta
- DataStructure PracticalsUploaded byTurtle17
- Maths for It 5 n 18396 Resource ListUploaded byRenzon Masangcay Regala
- Query to Retrieve 1Uploaded bymuthu s
- AlgorithmUploaded byYessica Rosas
- M255_week9_tutor_v2Uploaded bySeif Habbachi
- CSC108_TT3_2009WUploaded byexamkiller
- Text FunctionUploaded bykumarbcomca
- ArraysUploaded bySupriya Setty A
- 5-More-on-Divide-n-Conquer.pdfUploaded byharry_i3t
- 05 StringsUploaded byjulianli0220
- 2 4 and Other NewsUploaded bybratishgoswami
- SaferUploaded byNicolásIgnacioFigueroaRamírez
- .ir. All PracsUploaded byJustin Sebastian
- Nick Mcnally ReportUploaded bySandra Markiv
- 06.01_VirtualLectureNotesPart1Uploaded byJake

- Ruby User's Guide.pdfUploaded bylakshmanvv
- B302 BteqUploaded byranusofi
- cmdlineibrix.pdfUploaded byscattcd
- CP_R70.1_UTM-1_GettingStartedUploaded byvijaysamuels1985
- Book - RubyUploaded byJean Philippeaux
- Netverify-implementation-guide v1 7 5Uploaded byYassin Souabni
- PerfeCaptureMac+User's+Manual+v1.0Uploaded byMiguel Diaz
- SQL Server 2016Uploaded byfaridadamabdillah
- Optimization Algorithm for Optimal MVMOUploaded byJaol1976
- Enhanced Pid PideUploaded byyazid32
- Mikrotik CLIUploaded byino
- V.karthikeyan Published Article Aa.Uploaded bykarthikeyan.v
- Pan-edu-101 - Lab Manual Pan-os 6 0 - Rev cUploaded byRyanb378
- s7-untyproUploaded byKhaldoon Alnashi
- pixupgrdUploaded bymavenla
- Tcl Tk and SkillUploaded byGeoff Labuac
- Touch para macOSUploaded byManu Opent
- AIX 6 AU16 System Administration II - Problem Determination ( Student Notebook )Uploaded byMrs Ples
- Public Key Encryption and 2Ack Based Approach to Defend Wormhole AttackUploaded byseventhsensegroup
- cwpUploaded byvijaychutar
- CCN Assignment# 2Uploaded byMahboob Hazraty
- Web Service Tutorial 4Uploaded bySiau Hui II
- SL70_ENUS_TVB_03Uploaded byenrikexk1
- aix vio trainingUploaded byMohammad Sami
- Mem WhitepaperUploaded bymegaccna
- L01-NumberSystemsUploaded by666667
- Sap Tips and TricksUploaded byArnab Ray
- summit_demystifying_systemd1.pdfUploaded bySladur Bg
- Data Compression Tech-csUploaded bylipika008
- MSP Design WorkshopUploaded byBouhafs Abdelkader