Big Data/Analytics Zone is brought to you in partnership with:

Giuseppe Vettigli works at the Cybernetics Institute of the Italian National Reasearch Council. He is mainly focused on scientific software design and development. His main interests are in Artificial Intelligence, Data Mining and Multimedia applications. He is a Linux user and his favorite programming languages are Java and Python. You can check his blog about Python programming or follow him on Twitter. Giuseppe is a DZone MVB and is not an employee of DZone and has posted 36 posts at DZone. You can read more from them at their website. View Full User Profile

Odd-Even Sort Visualized

04.12.2013
| 3042 views |
  • submit to reddit
The Odd/Even sort is a sorting algorithm which uses the concept of the Bubble Sort to move elements around. Unlike Bubble sort, the Odd/Even sort compares disjointed pairs by using alternating odd and even index values splitting the sorting in different phases. We have that in the odd phase all the element with an odd index i are compared with the adjacent even index i+1 and in the even phase all the element with an even index i are compared with the adjacent odd index i+1. These two phases are repeated until no exchanges are required. This is a Python snippet that make us able to visualize the behavior of the algorithm:
def oddeven_anim(a):
 imgidx =0
 x = range(len(a))
 sort =False;whilenot sort:
  sort =True;for i in range(1,len(a)-1,2):# odd phaseif a[i]> a[i+1]:
    a[i+1], a[i]= a[i], a[i+1]
    sort =False;for i in range(0,len(a)-1,2):# even phaseif a[i]> a[i+1]:
    a[i+1], a[i]= a[i], a[i+1]
    sort =False;
  pylab.plot(x,a,'k.',markersize=6)
  pylab.savefig("oddevensort/img"+'%04d'% imgidx +".png")
  pylab.clf()
  imgidx =  imgidx +1# run the algorithm
a = range(300)
shuffle(a)
oddeven_anim(a)
As in the other examples of sorting visualization in this blog, we have an image for each step of the algorithm. The following video have been produced joining all the images (here is explained how):

Published at DZone with permission of Giuseppe Vettigli, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)