Bubble Sort in Python and HackerRank 30 Days of Code

Coding Challenge Coding Live

Just like comb sort, cocktail sort is another sorting algorithm that attempts to improve the efficiency of bubble sort by eliminating turtles. Bubble sort continually bubbles large values to the end of the list from left-to-right on each pass. Cocktail sort uses a bidirectional method that bubbles large values to the end of the list on one pass and small values to the front of the list on the next pass. For more information on cocktail sort, read my article:Cocktail Sort.

HackerRank has a nice editor for one to enter the code. For me, I typically copy-and-paste the code from PyCharm or Pythonista.

Comb sortis a sorting algorithm that improves uponbubble sortby comparing and swapping values farther apart to eliminate turtles, which are small values at the end of the unsorted list. By moving these turtles to the front of the list quickly, comb sort reduces the number of swaps that would normally occur in bubble sort. In this tutorial, I will discuss comb sort as compared to bubble sort and write an implementation of comb sort in Python.

I typically write the solutions in PyCharm on my MacBook Pro or Pythonista on my iPad Pro before submitting the answer on HackerRank. All of the challenges have been easy, yet interesting, taking no more than 30 minutes and most taking half that time. Ive written Bubble sort before, so it took about 15 minutes to solve.

def bubble_sort(lst): num_swaps = 0 if len(lst) 2: return num_swaps for i in range(len(lst) – 1, 0, -1): for j in range(i): if lst[j] lst[j + 1]: lst[j], lst[j+1] = lst[j+1], lst[j] num_swaps += 1 return num_swaps a = list(range(3, 0, -1)) swaps = bubble_sort(a) print(Array is sorted in 0 swaps..format(swaps)) print(First Element: 0.format(a[0])) print(Last Element: 0.format(a[-1]))

I am learning divide and conquer algorithms and wrote Merge Sort in Python using Pythonista 3 on my iPad Pro. I included Doctests this time and plan to do so in the future. The Doctests provided a sanity check when I changed my algorithm based on an optimization I found elsewhere.

There are a few sorting algorithms that attempt to improve the efficiency of bubble sort. One of them isComb Sort, which improves bubble sort by eliminating turtles. Turtles are small values at the end of the unsorted list that slowly make their way to the front of the list. For more information on Comb Sort, read my article:Comb Sort Improves Bubble Sort by Eliminating Turtles.

If you are a C developer or just interested in C, I also wrote an example of Bubble Sort in C.

Asolution to insertion sort using Python that I wrote withPythonista on my iPad Pro. I have also included several Doctests to verify it is sorting a list of integers correctly using insertion sort. If you are attending computer science and algorithms courses like myself, I hope you find the code useful!

Cocktail sortis a sorting algorithm, likecomb sort, that attempts to improve the performance ofbubble sortby eliminating turtles. Turtles are small numbers at the end of the unsorted list that slowly move to the front of the list one position at a time using bubble sort.

I am a freelance, C MVC Developer learning Python as well as computer science, algorithms, data structures, and data science. In addition, I am learning and developing with the new Microsoft ASP.NET Core MVC and EF Core so you will see numerous tutorials and examples of ASP.NET Core on my website. I will also be sharing my adventures on websites that offer programming challenges, like HackerRank, to encourage other developers to learn new coding skills. You can find me on twitter . Best Wishes!

I ran the Bubble sort code against HackerRanks simple test cases and it passed. Once I submit the code it will be run against additional test cases. I get 30 points for the submission when the Bubble sort code passes all the tests.

HackerRanks 30 Days of Code Challenge is just one of many challenges. I want to complete this challenge before moving to another one, but there are challenges on algorithms ( which I am personally excited about ) as well as data structures, artificial intelligence, mathematics, Python, SQL, datatabase, functional programming, etc. There are also contests that happen from time-to-time. Its a great way to learn and stay sharp. I am enjoying my experience thus far, and I look forward to future challenges.

A couple of notes about my version of Bubble sort, since I suspect people code it differently.

My implentation of Bubble sort sorts in-place and returns the number of swaps. Keeping track of the number of swaps was a requirement of the HackerRank sorting challenge. One could easily remove the variablenum_swapsfrom the code if you dont care about the number of swaps.

I am learning Python and taking several online courses on computer science and algorithms. One of my assigments is to writeSelection Sortin Python. I wrote this sample code on my iPad Pro using Pythonista and included unit tests.

After each pass in Bubble sort the next highest value is in its proper position in the list. For example, after the first pass, the highest value is at the end of the list. After the second pass, the second highest value is in the next to the last position in the list. And so on, and so forth. This means you do not have to keep checking the items at the end, because they are in their proper position. Therefore, the inner loop in my code gradually gets smaller and smaller with each pass because it no longer needs to check the items at the end of the list. After each pass it reduces the number of items it checks by 1 as you can see from the doubleforloop.

Today, in one of my algorithms design and analysis classes I learned aboutQuicksort. Much like Merge Sort, Quicksort is a divide and conquer sorting algorithm that sorts the items in O(nlogn). In this article I will be writing a Quicksort function in Python.

I enjoy coding sorting algorithms (merge sortinsertion sortselection sortquicksort), so I was excited to see that Day 20 of HackerRanks 30 Days of Code was to write. I have written Bubble sort in Python numerous times and meant to write an article on it, but there are so many cool things I am learning now that it got pushed on the backburner. Today is the day, however, that I not only mention Bubble sort, but also mention HackerRank in case you havent heard of it before.

Bubble sort compares adjacent items in a list and swaps them when necessary so they are in ascending order. Lower values slowly move to the front of the list while larger numbers move to the back of the list. Its runtime performance is O(n2), which makes it impractical for large values ofn. It is a fun sorting algorithm to code, however. Here is my implementation of Bubble sort in Python that I submitted to HackerRank.

I wrote Bubble Sort in C using my iPad Pro and the continous C and F IDE. If you like to challenge yourself at writing C or F and have an iPad, I highly recommend the continuous C and F IDE for practicing C and F coding when the opportunity may rise.

This isnt really necessary, but I added the performance tweak because it makes sense. I dont see this performance enhancement in all Bubble sort code samples.

using System; public int BubbleSort(int[] lst) var numSwaps = 0; if (lst.Length 2) return numSwaps; for (int i = lst.Length – 1; i 0; i–) for (int j = 0; j i; j++) if (lst[j] lst[j+1]) var temp = lst[j+1]; lst[j+1] = lst[j]; lst[j] = temp; numSwaps++; return numSwaps; var lst = new [] 3, 2, 1; var swaps = BubbleSort(lst); Console.WriteLine(sorted list = 0, string.Join(,, lst)); Console.WriteLine($swaps = swaps);

As I have mentioned several times, I am learning Python as well as computer science, algorithms, data structures, and a bunch of other topics in the majority of my free time. I came acrossHackerRankand similar websites that offer various programming challenges to help developers write better code. There is a lot to HackerRank and I have only scratched the surface, but approximately 3 weeks ago I joined the30 Days of Code Challengeand promised myself I would complete it using Python 3. However, not all challenges are available in all languages, so Ive been solving a few of the challenges using C.

Each day I receive an email from HackerRank mentioning a new challenge. Day 20 is the Bubble sort challenge. I get a nice description of the challenge along with supplement information and expected input, output, and possibly starter code.

Leave a Reply