ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel

How to sort an array using Bubble sort algorithm in Java ?.

Updated on September 17, 2014

Introduction -

In this tutorial, you will learn how to sort an array using Bubble sort algorithm in Java. Sorting is a process by which collection of elements are arranged in a certain order, i.e. either in ascending or descending order. There are many algorithms which can sort elements. Bubble sort technique is one such way to sort. It is simplest algorithm which sorts an array by iterating from first element to last. On iterating from first to last element it compares values of successive elements and swap them either in ascending or descending order. It is given name as Bubble sort because using this sorting algorithm smaller elements "bubble" to the top of array, while larger elements stay at bottom. In this tutorial, you will learn how to code Bubble sort algorithm in Java through a complete video tutorial and highly commented code.

Video tutorial - Bubble Sort in Java

Bubble sort code - Eclipse snapshot

Bubble Sort algorithm in Java
Bubble Sort algorithm in Java

Source code - Bubble sort in Java.

// Create a Java class.
public class BubbleSort {

	// Create a static method taking in a unsorted array.
	public static void bubbleSort(int[ ] array) {
		
		// Create a boolean variable to test whether next pass
		// is required or not.
		boolean nextPass = true;

		// Create a for loop having value of integer m as 1 in the
		// initialization step. The loop will traverse till boolean 
		// condition is true. Here on each loop it check whether m 
		// is less than length of array and nextPass value is true or not. At last there
		// is an incremental step which increments value of m by one.
		for (int m = 1; m < array.length && nextPass; m++) {

			// Assign a value false to nextPass variable.
			nextPass = false;

			// Create a inner for loop having value of integer i as 0 in the
			// initialization step. The loop will traverse till boolean condition
			// is true. Here on each loop it check whether i is less than length 
			// of array minus the value of m. At last there
			// is an incremental step which increments value of i by one.  
			for (int i = 0; i < array.length - m; i++) {

				// In each outer loop for inner for loop check is done 
				// whether element at i position is greater than element at
				// i + 1 position. If value of element at i position is greater than 
				// value of element at i + 1 position. Than we need to swap those
				// two values in array. With each completion of outer for loop loop
				// element with larger value sinks at last. 
				if (array[i] > array[i + 1]) {

					// Creata a temp variable which holds value of element at i 
					// position. It temporarily hold value of i element of array.
					int temp = array[i];

					// Assign the value of  i + 1 element to i element. 
					array[i] = array[i + 1];

					// Assign value of temp variable to i + 1 element. After these three steps
					// element at i position will have value  of  element at i + 1 position and 
					// i + 1 element will have value of i element.
					array[i + 1] = temp;

					// Since, swapping of value is been done in the pass, hence there has to be
					// next pass. If above if check came out to be false for  iteration of 
					// outer for loop than it confirms that array is already sorted. 
					nextPass = true;
				}
			}
		}
	}

Steps to implement - Bubble sort in Java.

Step 1 - Create a Java class.

Step 2 - Create a static method taking in a unsorted array. Here, in our case method name is bubbleSort.

Step 3 - Create a boolean variable to test whether next pass is required or not.

Step 4 - Create a for loop having value of integer m as 1 in the initialization step. The loop will traverse till boolean condition is true. Here, on each loop it check whether value of m is less than length of array and nextPass value is true or not. At last there is an incremental step which increments value of m by one.

Step 5 - Assign a value false to nextPass variable.

Step 6 - Create a inner for loop having value of integer i as 0 in the initialization step. The loop will traverse till boolean condition is true. Here on each loop it check whether value of i is less than length of array minus the value of m. At last there is an incremental step which increments value of i by one.

Step 7 - In each outer loop for inner for loop check is done whether element at i position is greater than element at i + 1 position. If value of element at i position is greater than value of element at i + 1 position. Than we need to swap those two values in array. With each completion of outer for loop element with larger value sinks at last.

Step 8 - Create a a temp variable which holds value of element at i position. It temporarily hold value of i element of array.

Step 9 - Assign the value of i + 1 element to i element.

Step 10 - Assign value of temp variable to i + 1 element. After these three steps element at i position will have value of element at i + 1 position and i + 1 element will have value of i element.

Step 11 - Since, swapping of value is been done in the pass, hence there has to be next pass. If above, if check came out to be false for iteration of outer for loop than it confirms that array is already sorted.

Bubble sort test code - Eclipse snapshot

Bubble sort test code in Java.
Bubble sort test code in Java.

Video tutorial to demonstrate how swapping of two numbers is done in Java.

Bubble sort test code

// Create a main method to test Bubble sort algorithm.
	public static void main(String[ ] args) {

		// Create an unsorted array having few elements as shown below.
		int[ ] array = {3, 1, 6, 7, 0, 3, 14, 12, -15};

		// Print unsorted array on Java console with help of for loop.
		System.out.println("Array before sorting - ");
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i] + " ");
		}
		// Pass the unsorted array to bubbleSort method to sort in 
		// ascending order.
		bubbleSort(array);

		System.out.println();

		// After bubbleSort method execution, print sorted array on Java
		// console with help of for loop.
		System.out.println("Array after sorting - ");
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i] + " ");
		}
	}

Steps to implement - Bubble sort test code.

Step 1 - Create a main method to test Bubble sort algorithm.

Step 2 - Create an unsorted array having few elements as shown in above code.

Step 3 - Print unsorted array on Java console with help of for loop.

Step 4 - Pass the unsorted array to bubbleSort method to sort array in ascending order.

Step 5 - After bubbleSort method execution, print sorted array on Java console with help of for loop.

Output of the program - Eclipse snapshot

Bubble sort algorithm output
Bubble sort algorithm output

Output of the program - Explanation

In order to test bubble sort algorithm, we run above main method. The main method creates first an unsorted array. Using for loop it displays unsorted array on Java console as , 3, 1, 6, 7, 0, 3, 14, 12, -15. It than passes unsorted array to bubbleSort method to sort its elements in ascending order. After bubbleSort method ends, main method proceeds further and prints sorted array on Java console as, -15, 0, 1, 3, 3, 6, 7, 12, 14. Thus, it sorts array elements in ascending order based on Bubble sort algorithm.

Comments

    0 of 8192 characters used
    Post Comment

    No comments yet.

    working

    This website uses cookies

    As a user in the EEA, your approval is needed on a few things. To provide a better website experience, hubpages.com uses cookies (and other similar technologies) and may collect, process, and share personal data. Please choose which areas of our service you consent to our doing so.

    For more information on managing or withdrawing consents and how we handle data, visit our Privacy Policy at: https://hubpages.com/privacy-policy#gdpr

    Show Details
    Necessary
    HubPages Device IDThis is used to identify particular browsers or devices when the access the service, and is used for security reasons.
    LoginThis is necessary to sign in to the HubPages Service.
    Google RecaptchaThis is used to prevent bots and spam. (Privacy Policy)
    AkismetThis is used to detect comment spam. (Privacy Policy)
    HubPages Google AnalyticsThis is used to provide data on traffic to our website, all personally identifyable data is anonymized. (Privacy Policy)
    HubPages Traffic PixelThis is used to collect data on traffic to articles and other pages on our site. Unless you are signed in to a HubPages account, all personally identifiable information is anonymized.
    Amazon Web ServicesThis is a cloud services platform that we used to host our service. (Privacy Policy)
    CloudflareThis is a cloud CDN service that we use to efficiently deliver files required for our service to operate such as javascript, cascading style sheets, images, and videos. (Privacy Policy)
    Google Hosted LibrariesJavascript software libraries such as jQuery are loaded at endpoints on the googleapis.com or gstatic.com domains, for performance and efficiency reasons. (Privacy Policy)
    Features
    Google Custom SearchThis is feature allows you to search the site. (Privacy Policy)
    Google MapsSome articles have Google Maps embedded in them. (Privacy Policy)
    Google ChartsThis is used to display charts and graphs on articles and the author center. (Privacy Policy)
    Google AdSense Host APIThis service allows you to sign up for or associate a Google AdSense account with HubPages, so that you can earn money from ads on your articles. No data is shared unless you engage with this feature. (Privacy Policy)
    Google YouTubeSome articles have YouTube videos embedded in them. (Privacy Policy)
    VimeoSome articles have Vimeo videos embedded in them. (Privacy Policy)
    PaypalThis is used for a registered author who enrolls in the HubPages Earnings program and requests to be paid via PayPal. No data is shared with Paypal unless you engage with this feature. (Privacy Policy)
    Facebook LoginYou can use this to streamline signing up for, or signing in to your Hubpages account. No data is shared with Facebook unless you engage with this feature. (Privacy Policy)
    MavenThis supports the Maven widget and search functionality. (Privacy Policy)
    Marketing
    Google AdSenseThis is an ad network. (Privacy Policy)
    Google DoubleClickGoogle provides ad serving technology and runs an ad network. (Privacy Policy)
    Index ExchangeThis is an ad network. (Privacy Policy)
    SovrnThis is an ad network. (Privacy Policy)
    Facebook AdsThis is an ad network. (Privacy Policy)
    Amazon Unified Ad MarketplaceThis is an ad network. (Privacy Policy)
    AppNexusThis is an ad network. (Privacy Policy)
    OpenxThis is an ad network. (Privacy Policy)
    Rubicon ProjectThis is an ad network. (Privacy Policy)
    TripleLiftThis is an ad network. (Privacy Policy)
    Say MediaWe partner with Say Media to deliver ad campaigns on our sites. (Privacy Policy)
    Remarketing PixelsWe may use remarketing pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to advertise the HubPages Service to people that have visited our sites.
    Conversion Tracking PixelsWe may use conversion tracking pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to identify when an advertisement has successfully resulted in the desired action, such as signing up for the HubPages Service or publishing an article on the HubPages Service.
    Statistics
    Author Google AnalyticsThis is used to provide traffic data and reports to the authors of articles on the HubPages Service. (Privacy Policy)
    ComscoreComScore is a media measurement and analytics company providing marketing data and analytics to enterprises, media and advertising agencies, and publishers. Non-consent will result in ComScore only processing obfuscated personal data. (Privacy Policy)
    Amazon Tracking PixelSome articles display amazon products as part of the Amazon Affiliate program, this pixel provides traffic statistics for those products (Privacy Policy)