Bubble sort (LList,n)

3
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;

description

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 - PowerPoint PPT Presentation

Transcript of Bubble sort (LList,n)

Page 1: Bubble sort (LList,n)

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;

Page 2: Bubble sort (LList,n)

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)

Page 3: Bubble sort (LList,n)

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