30 likes | 145 Views
Bubble sort (LList,n). not_sorted true; while not_sorted do not_sorted false ; cur LList.first; while cur.next NIL do if cur.data> cur.next.data then swap(cur.data,cur.next.data); not_sorted true; cur cur.next;. Bubble sort (LList,n). for i=1 to n-1 do
E N D
Bubble sort (LList,n) not_sorted true; while not_sorted do not_sorted false; cur LList.first; while cur.next NIL do if cur.data> cur.next.data then swap(cur.data,cur.next.data); not_sorted true; cur cur.next;
Bubble sort (LList,n) • for i=1 to n-1 do • cur LList.first; • for j=1 to n-i do • if cur.data> cur.next.data then • swap (cur.data, cur.next.data); • 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 Invariant 2:i<n, after i iterations of thefor-loopat 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) • 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
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