<?xml version="1.0" encoding="windows-1252"?>
<node id="635807" title="Re^3: An informal introduction to O(N) notation" created="2007-08-29 10:14:21" updated="2007-08-29 06:14:21">
<type id="11">
note</type>
<author id="961">
Anonymous Monk</author>
<data>
<field name="doctext">
While we're nitpicking:

O() defines an upper bound (typically, but not exclusively, on worst case behaviour)

&amp;#937;() defines a lower bound (again typically, but not exclusively, on best-case behaviour)

An algorithm is said to run in &amp;#920;(f(n)) if it runs in O(f(n)) and in &amp;#937;(f(n)), i.e. the upper and lower bounds are no more than a constant multiple of each other.  It is a tighter definition than average-case execution complexity which depends on first defining the properties of an "average" input.  I think what you're trying to define above is average-case execution complexity - by definition of the &amp;#920;() notation your statement above cannot be true.

BTW mergesort is O(n lg n).

- Menahem</field>
<field name="root_node">
227909</field>
<field name="parent_node">
245691</field>
<field name="reputation">
5</field>
</data>
</node>
