<!DOCTYPE html>
<html ng-app>

  <head>
    <script data-require="angular.js@1.3.0-beta.5" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>
    <script data-require="jquery@*" data-semver="2.1.1" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body>
    <h1>Bubble Sorting Visualization</h1>
  
  
  <div ng-controller="ctrl">
    <div class="value-line" ng-repeat="i in data" style="width:{{i*10}}px;">{{i}}</div>
    
    <button ng-click="start()">sort</button>
    <button ng-click="reset()">reset</button>
    <span style="color:red">{{alertMsg}}</span>
    
  </div>
  
  
  </body>

</html>
// Code goes here

function ctrl($scope,$timeout){
  var defaultData=[54,16,37,28,29,24,21,11,5,10,4,3,8,1,25,12,20,30];

 $scope.reset=function(){
    $scope.data=defaultData.map(function(i){
      return i;
    });
    pointer=0;
    checklen=$scope.data.length;
	  $scope.alertMsg="";
   
  }
	 
  
  var sorting=function(){
    var data=$scope.data;
  
    
    if(data[pointer]>data[pointer+1])
    {
      var tmp=data[pointer]; 
      data[pointer]=data[pointer+1];
      data[pointer+1]=tmp;
    }
    
   pointer++;
    if( pointer>=checklen){
      checklen--;
      pointer=0;
    }
    
    if(checklen <=0){
     $scope.alertMsg="sorting done";
    }else{
      $timeout(sorting,100);
    }
   
   };
 
  $scope.start=function(){
    $timeout(sorting,100);
   
  }
		
		$scope.reset();
  
}
/* Styles go here */

.value-line{
  margin-bottom:1px;
  background:green;
  color:white;
  
}