diff --git a/Python/Cocktail_Sort.py b/Python/Cocktail_Sort.py new file mode 100644 index 0000000..78f8521 --- /dev/null +++ b/Python/Cocktail_Sort.py @@ -0,0 +1,52 @@ +# GitHub username: grvkr777 (Gaurav Kar) +# Python program for implementation of Cocktail Sort + +def cocktailSort(a): + n = len(a) + swapped = True + start = 0 + end = n-1 + while (swapped == True): + + # reset the swapped flag on entering the loop, + # because it might be true from a previous + # iteration. + swapped = False + + # loop from left to right same as the bubble + # sort + for i in range (start, end): + if (a[i] > a[i + 1]) : + a[i], a[i + 1]= a[i + 1], a[i] + swapped = True + + # if nothing moved, then array is sorted. + if (swapped == False): + break + + # otherwise, reset the swapped flag so that it + # can be used in the next stage + swapped = False + + # move the end point back by one, because + # item at the end is in its rightful spot + end = end-1 + + # from right to left, doing the same + # comparison as in the previous stage + for i in range(end-1, start-1, -1): + if (a[i] > a[i + 1]): + a[i], a[i + 1] = a[i + 1], a[i] + swapped = True + + # increase the starting point, because + # the last stage would have moved the next + # smallest number to its rightful spot. + start = start + 1 + +# Driver code to test above +a = [5, 1, 4, 2, 8, 0, 2] +cocktailSort(a) +print("Sorted array is:") +for i in range(len(a)): + print ("% d" % a[i]), \ No newline at end of file