Post on 31-Dec-2015
description
Bubble sort (LList,n)not_sorted true;
while not_sorted do
not_sorted false;
cur LList.first;
while cur.next NIL doif cur.data> cur.next.data then
swap(cur.data,cur.next.data);
not_sorted true;
cur cur.next;
Bubble sort (LList,n)1. for i=1 to n-1 do2. cur LList.first;3. for j=1 to n-i do4. if cur.data> cur.next.data then 5. swap (cur.data, cur.next.data);6. cur cur.next;
Invariant 1: j<n, l j, after j iterations of the for-loop at line 3,
(j+1)-st el l-th
Proof by induction on j:
Base: j=0 trivial; j=1 obvious.
IH: suppose true for j–1: j-th el is max in [1..j]
IS: after the next iteration of 3-5, (j+1) is the max
Invariant 2: i<n, after i iterations of the for-loop at line 1, the last i el’s are “in place”
Proof: by induction using Inv.1
Corollary: When i=n-1 all elements are “in place” (sorted)
Insertion Sort
for i= 2 to n doj i;while j>1 AND A[j-1]>A[j] do swap( A[j], A[j-1] )
j j-1
Invariant: at the end of each for-loop iteration the first i elements are in the sorted order