Selection sort: Difference between revisions
(Created page with "https://openlearnware.tu-darmstadt.de/#!/resource/selection-sort-1948") |
No edit summary |
||
(16 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
https://openlearnware.tu-darmstadt.de/#!/resource/selection-sort-1948 | [[Category:Sorting Algorithms]] | ||
<div class="plainlinks" style="float:right;margin:0 0 5px 5px; border:1px solid #AAAAAA; width:auto; padding:1em; margin: 0px 0px 1em 1em;"> | |||
<div style="font-size: 1.8em;font-weight:bold;text-align: center;margin:0.2em 0 1em 0">Selection Sort</div> | |||
<div style="font-size: 1.2em; margin:.5em 0 1em 0; text-align:center">whatever</div> | |||
<div style="font-size: 1.2em; margin:.5em 0 .5em 0;text-align:center">[[File:olw_logo1.png|20px]][https://openlearnware.tu-darmstadt.de/#!/resource/selection-sort-1948 Openlearnware]</div> | |||
</div> | |||
== General information == | |||
'''Algorithmic problem:''' [[Sorting based on pairwise comparison]] | |||
'''Type of algorithm:''' loop | |||
== Abstract view == | |||
'''Invariant:''' After <math>i \geq 0</math> iterations: The elements at positions <math>|S|-i+1,\dots,|S|</math> are correctly placed in sorting order. | |||
'''Variant:''' <math>i</math> increases by <math>1</math>. | |||
'''Break condition:''' <math>i = |S| - 1</math>. | |||
== Induction Basis == | |||
'''Abstract view:''' Nothing to do. | |||
'''Implementation:''' Nothing to do. | |||
'''Proof:''' Nothing to show. | |||
== Induction step == | |||
'''Abstract view:''' Identify the maximum out of <math>S[1],\dots,S[|S|-i+1]</math> and then move it, by a swap, to position <math>|S|-i+1</math>. | |||
'''Implementation:''' | |||
# Set <math>m := 1</math> | |||
# For all <math>j=2,\dots,|S|-i+1</math>: If <math>S[j] > S[m]</math> set <math>m := j</math>. | |||
# Swap <math>S[m]</math> and <math>S[|S|-i+1]</math>. | |||
'''Correctness:''' Obviously: <math>S[m]</math> is the maximum element out of <math>S[1],\dots,S[j]</math>. | |||
== Complexity == | |||
'''Statement:''' The asymptotic complexity is in <math>\Theta(T\cdot n^2)</math> in the best and worst case, where <math>T</math> is the complexity of the comparison. | |||
'''Proof:''' The asymptotic complexity of the <math>i</math>-th iteration is in <math>\Theta(T\cdot(n - i))</math>. Therefore, the total complexity is in <math>\Theta\left(T\cdot\sum_{i=1}^{n-1} (n-i) \right) = \Theta\left(T\cdot\sum_{i=1}^{n-1} i \right) = \Theta\left(T\cdot\frac{n(n-1)}{2} \right) = \Theta\left(T\cdot n^2\right)</math>. |
Latest revision as of 11:05, 30 June 2015
General information
Algorithmic problem: Sorting based on pairwise comparison
Type of algorithm: loop
Abstract view
Invariant: After [math]\displaystyle{ i \geq 0 }[/math] iterations: The elements at positions [math]\displaystyle{ |S|-i+1,\dots,|S| }[/math] are correctly placed in sorting order.
Variant: [math]\displaystyle{ i }[/math] increases by [math]\displaystyle{ 1 }[/math].
Break condition: [math]\displaystyle{ i = |S| - 1 }[/math].
Induction Basis
Abstract view: Nothing to do.
Implementation: Nothing to do.
Proof: Nothing to show.
Induction step
Abstract view: Identify the maximum out of [math]\displaystyle{ S[1],\dots,S[|S|-i+1] }[/math] and then move it, by a swap, to position [math]\displaystyle{ |S|-i+1 }[/math].
Implementation:
- Set [math]\displaystyle{ m := 1 }[/math]
- For all [math]\displaystyle{ j=2,\dots,|S|-i+1 }[/math]: If [math]\displaystyle{ S[j] \gt S[m] }[/math] set [math]\displaystyle{ m := j }[/math].
- Swap [math]\displaystyle{ S[m] }[/math] and [math]\displaystyle{ S[|S|-i+1] }[/math].
Correctness: Obviously: [math]\displaystyle{ S[m] }[/math] is the maximum element out of [math]\displaystyle{ S[1],\dots,S[j] }[/math].
Complexity
Statement: The asymptotic complexity is in [math]\displaystyle{ \Theta(T\cdot n^2) }[/math] in the best and worst case, where [math]\displaystyle{ T }[/math] is the complexity of the comparison.
Proof: The asymptotic complexity of the [math]\displaystyle{ i }[/math]-th iteration is in [math]\displaystyle{ \Theta(T\cdot(n - i)) }[/math]. Therefore, the total complexity is in [math]\displaystyle{ \Theta\left(T\cdot\sum_{i=1}^{n-1} (n-i) \right) = \Theta\left(T\cdot\sum_{i=1}^{n-1} i \right) = \Theta\left(T\cdot\frac{n(n-1)}{2} \right) = \Theta\left(T\cdot n^2\right) }[/math].