Anonymous user
Compare sorting algorithms' performance: Difference between revisions
Compare sorting algorithms' performance (view source)
Revision as of 17:35, 5 April 2013
, 11 years agoDebugged and updated D entry: heapfy is not a heapSort.
No edit summary |
(Debugged and updated D entry: heapfy is not a heapSort.) |
||
Line 787:
=={{header|D}}==
<lang d>import std.stdio, std.algorithm, std.container, std.datetime,
std.random, std.typetuple;
immutable
static this() { // Initialize global Arrays.
immutable size_t arraySize = 10_000;
allOnes = new int[arraySize];
//allOnes[] = 1;
foreach (ref d; allOnes)
sortedData = new int[arraySize];
foreach (immutable i, ref d; sortedData)
randomData = new int[arraySize];
foreach (ref d; randomData)
}
// BubbleSort:
void bubbleSort(T)(T[] list) {
for (int i = list.length - 1; i > 0; i--)
for (int j = i -1; j >= 0; j--)
if (list[i] < list[j])
}
void allOnesBubble() {
auto data = allOnes.dup;
}
void sortedBubble() {
auto data = sortedData.dup;
}
void randomBubble() {
auto data = randomData.dup;
}
// InsertionSort:
void insertionSort(T)(T[] list) {
foreach (immutable i, currElem; list) {
size_t j = i;
for (; j > 0 && currElem < list[j - 1]; j--)
list[j] = currElem;
}
}
void allOnesInsertion() {
auto data = allOnes.dup;
}
void sortedInsertion() {
auto data = sortedData.dup;
}
void randomInsertion() {
auto data = randomData.dup;
}
// HeapSort:
void heapSort(T)(T[] data) {
auto h = data.heapify;
h.removeFront;
}
void
auto data = allOnes.dup;
}
void
auto data = sortedData.dup;
}
void
auto data = randomData.dup;
}
// Built-in sort:
void allOnesBuiltIn() {
auto
data.sort!q{a < b};
assert(data.isSorted);
}
void
auto data = sortedData.dup;
assert(data.isSorted);
}
void
auto data = randomData.dup;
assert(data.isSorted);
}
static void show(in TickDuration[4u] r) {
alias args = TypeTuple!("usecs", int);
writefln(" Bubble Sort: %10d", r[0].to!args);
writefln(" Insertion Sort: %10d", r[1].to!args);
writefln(" Built-in Sort: %10d",
}
void main() {
enum nRuns = 100;
writeln("Timings in microseconds:");
writeln(" Testing against all ones:");
nRuns.benchmark!(allOnesBubble, allOnesInsertion,
allOnesHeap, allOnesBuiltIn).show;
writeln("\n Testing against sorted data.");
nRuns.benchmark!(sortedBubble, sortedInsertion,
sortedHeap, sortedBuiltIn).show;
writeln("\n Testing against random data.");
nRuns.benchmark!(randomBubble, randomInsertion,
randomHeap, randomBuiltIn).show;
}</lang>
{{out}}
<pre>Timings in microseconds:
Testing against all ones:
Bubble Sort: 7377065
Insertion Sort: 5868
Heap Sort: 25173
Built-in Sort: 34538
Testing against sorted data.
Bubble Sort:
Insertion Sort:
Testing against random data.
Bubble Sort:
Insertion Sort:
(With 10,000 elements in each array. A naive HeapSort seems faster than the built-in sort in all three cases.)
=={{header|J}}==
|