Learnerslesson
   JAVA   
  SPRING  
  SPRINGBOOT  
 HIBERNATE 
  HADOOP  
   HIVE   
   ALGORITHMS   
   PYTHON   
   GO   
   KOTLIN   
   C#   
   RUBY   
   C++   




JAVA - SCRIPT-BUBBLE SORT CODE




Example :



<html>
<body>    
<script> 

	function bubbleSort(arr) {	 
        var n = arr.length 
        var temp = 0
        for (let i = 0; i <= n; i++) {
            // (n-i-1) is to ignore the comparisons that is already done.
            for (let j = 0; j <= n-i-1; j++) {
                if (arr[j] > arr[j+1]) {   	
                    temp = arr[j]
                    arr[j] = arr[j+1]
                    arr[j+1] = temp
                }
            }
        }
    }                

    var arr = [7, 4, 8, 1, 6]         
    bubbleSort(arr)
    for (let i = 0; i < arr.length; i++) {    
        document.write(arr[i], "</br>")
    }  

</script>
</body>
</html>   


Output :



  1
  4
  6
  7
  8

We are just concerned about the function bubbleSort(arr) method, where the sorting logic is defined.


We have the array


var arr = [7, 4, 8, 1, 6]

Which we have passed to the bubbleSort(..) method.


In the bubbleSort(..) method, we have taken the count of the elements of the array.


var n = arr.length

Now, let us corelate this code with the explanation of Bubble Sort.


Let us take the same diagram.

java_Collections

And take the chunk of code and explain it.


for (let i = 0; i <= n; i++) {
	// (n-i-1) is to ignore the comparisons that is already done.
	for (let j = 0; j <= n-i-1; j++) {
		if (arr[j] > arr[j+1]) {
			temp = arr[j]
			arr[j] = arr[j+1]
			arr[j+1] = temp
		}
	}
}

So, the outer loop, i.e.


for (let i = 0; i <= n; i++)

Determines the Passes. If you see the above explanation you can find the first pass,


1st Pass (i.e. When i=0)


Then comes the the inner loop, i.e.


for (let j = 0; j <= n-i-1; j++)

Which determines the iterations.

java_Collections

Next, comes the comparison where we compare 1st and 2nd element. And if the 1st element is greater than 2nd element we swap it.


if(arr[j] > arr[j+1] ) {
	temp = arr[j]
	arr[j] = arr[j+1]
	arr[j+1] = temp
}

Where arr[j] refers to the first element i.e. 7 and arr[j+1] refers to the second element i.e. 4.


And continue in the same pattern.


Note : (n-i-1) in the conditional part of inner loop ignores the last element from each passes.

Efficiency / Running time of Bubble Sort


If we consider the Bubble Sort Algorithm, there are two loops. Firstly, there is the for loop. And inside the for loop there is also a for loop.


The for loop executes n times(Assuming the array contains n elements).


Now, for each iteration of for loop, the nested for loop also executes approximately n times.


Which means for 1st iteration of for loop,


the nested for loop also runs n time.

Similarly, for 2nd iteration of for loop,


inner for loop runs (n-1) times.

Similarly, for nth iteration of for loop,


inner for loop runs 1 time.

So, the running time is close to n*n or n^2.


So, in worst case the running time is O(n^2).


Note : Worst case is the scenario where the array elements are all sorted in descending order. i.e. 8, 7, 6, 4, 1.