• Sathish Kumar 241
  • NEWBIE
  • 0 Points
  • Member since 2016

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 5
    Questions
  • 2
    Replies
Hi friends i have implemented bubble sort and quick sort using apex and visualforce, i.e 
User-added image
when i press buttons bubble sort and quick sort, its getting sorted.
Now my requirement is there should be a single button called sort. So that if i press sort sorted values shoud be displayed in its respective blocks, i,eUser-added image

Plz guide me, how am i going to acheive this. I am new to apex and visualforce.
Hi, I have implemented Quick Sort(recursion).
I need to print all the iterations.
Plz guide me.
Below is my code:

public class bubbleSort1 {
      // public list<integer> values {get;set;}
    public String userInput {get;set;}
    public List<Integer> values {GET; SET;}
    public set<string> itList {get; set;}
    public set<string> itListquick {get; set;}
    
    public list<Integer> getbubbleSortMethod(){
        itList = new set<string>();
      // values = new list<integer>();
      //  values.add(5);
      //  values.add(8);
        integer iterationsize = values.size();
        integer temp = 0;
        integer temp5;
        boolean b;
        integer count=0;
       
        for(integer i=0; i < iterationsize; i++){
            for(integer j=1; j < (iterationsize-i); j++){
                temp5=values[j-1];
                if(values[j-1] > values[j]){
                    //swap the elements!
                    temp = values[j-1];
                    values[j-1] = values[j];
                    values[j] = temp;
                }
                if(values[j-1] != temp5){
                b=true;
                system.debug('swaped result is'+ values);
                    
                    
                }
                if(b==false)
                count=count+1;
            }
            system.debug('swaped result is'+ values);
            string str = '';
            for( integer v :values){
                str += string.valueOf(v+',');
            }
            itList.add(str);
        }
       
        System.debug('values ' + values);
        system.debug('No of iterations are'+ values.size());
        return values;
    }
            public void display(){
                system.debug('User input...' +userInput);
                List<String> temp = userInput.split(',');
                values = NEW lIST<iNTEGER>();
                for(String s : temp){
                    values.add(Integer.valueOf(s));
                }
                   getbubbleSortMethod();         
            }
    
    public List<Integer> getvalues {
    get { 
        return values;
    }
        set;}
        
         public void displayquicksort(){
                system.debug('User input...' +userInput);
                List<String> temp = userInput.split(',');
                values = NEW lIST<iNTEGER>();
                for(String s : temp){
                    values.add(Integer.valueOf(s));
                }
                   sort(values);         
            }
        
        
        
    // private int input[];
   // private int length;
      public  list<integer> lstInteger = new list<Integer>();
        integer len;
  
        public void sort(list<Integer> qs){
        if (qs == null || qs.size() == 0) {
            return;
        }
        this.lstInteger = qs;
        len = qs.size();
        quickSort(0, len - 1);
    }

    /*
     * This method implements in-place quicksort algorithm recursively.
     */
    private void quickSort(integer low, integer high) {
        integer i = low;
        integer j = high;
        itListquick = new set<string>();
        // pivot is middle index
        integer pivot = lstInteger[low + (high - low) / 2];

        // Divide into two arrays
        while (i <= j) {
            /**
             * As shown in above image, In each iteration, we will identify a
             * number from left side which is greater then the pivot value, and
             * a number from right side which is less then the pivot value. Once
             * search is complete, we can swap both numbers.
             */
            while (lstInteger[i] < pivot) {
                i++;
            }
            while (lstInteger[j] > pivot) {
                j--;
            }
            if (i <= j) {
                swap(i, j);
                
            
            
            
                // move index to next position on both sides
                i++;
                j--;
            }
         
        }

        // calls quickSort() method recursively
        if (low < j) {
            quickSort(low, j);
        }

        if (i < high) {
            quickSort(i, high);
        }
    }

    private void swap(integer i, integer j) {
        integer temp = lstInteger[i];
        lstInteger[i] = lstInteger[j];
        lstInteger[j] = temp;
    }




        
}
Hi,

I have implemented Bubble sort on array of integers. Which also prints iteration details.
I want to print that iteration details on vf page. Below is my apex code and vf page.
vf page

<apex:page controller="bubbleSort1">
  <apex:form >

  
  
  <apex:pageBlock >
  Enter Number
  :<apex:inputtext value="{!userInput}"/>
       <apex:pageblockbuttons >
           <apex:commandbutton value="Display" action="{!display}"/>
               </apex:pageblockbuttons>
      <apex:pageBlockSection >
          <apex:outputLabel >These are the sorted values</apex:outputLabel>
        <!--  <apex:inputText value="{!values}"/> -->
      </apex:pageBlockSection>
      <apex:pageBlockSection >
          <apex:pageBlockTable value="{!bubbleSortMethod}" var="a">
              <apex:column value="{!a}"/>
          </apex:pageBlockTable>
          
      </apex:pageBlockSection>
  
  </apex:pageBlock>
       </apex:form> 
</apex:page>

Controller
public class bubbleSort1 {
      // public list<integer> values {get;set;}
    public String userInput {get;set;}
    public List<Integer> values = new List<Integer>{12,45,89,78,65,23};
    public list<Integer> getbubbleSortMethod(){
    
      // values = new list<integer>();
      //  values.add(5);
      //  values.add(8);
        integer iterationsize = values.size();
        integer temp = 0;
        integer temp5;
        boolean b;
        integer count=0;
        for(integer i=0; i < iterationsize; i++){
            for(integer j=1; j < (iterationsize-i); j++){
                temp5=values[j-1];
                if(values[j-1] > values[j]){
                    //swap the elements!
                    temp = values[j-1];
                    values[j-1] = values[j];
                    values[j] = temp;
                }
                if(values[j-1] != temp5){
                b=true;
                system.debug('swaped result is'+ values);
                    
                }
                if(b==false)
                count=count+1;
            }
        }
     
        System.debug('values ' + values);
        system.debug('No of iterations are'+ values.size());
        return values;
    }
            public void display(){
                system.debug('User input...' +userInput);
                List<String> temp = userInput.split(',');
                for(String s : temp){
                    values.add(Integer.valueOf(s));
                }
                
               
            
            }
    
}


Thanks in advance
Hi,

I am trying to implemet bubble sort, but i am getting error. Below is my  code.
public class bubbleSort {
    List<Integer> values = new List<Integer>{10,9,8,7,6,5,4,3,2,1};
    
        integer i = 0;
        integer iterationsize = values.size();
    
                for(i=0; i < iterationsize; i++)
                {
                   boolean swapped = false;
                   for(integer j = 0;j < iterationsize; j++)
                   {
                       if( i + 1 == values.size()) break;
                       if(values.get(i) > values.get(i + 1))
                       {
                             integer swapVal = values.get(j);
                            swapped = true;
                               values.set(j, values.get(j+1));
                            values.set(j+1,swapVal);
                           }
                        System.debug('Iterations List=='JSON.serialize(values));
                   }
                   iterationSize--;
              System.debug('SWAPPED =='+swapped);
              System.debug(JSON.serialize(values));
              if(!swapped) {i=values.size();}
           }
 System.debug('Final List of values=='+ JSON.serialize(values));
}


Error: @ line 7: expecting right curly bracket, found 'for'

Thanks in advance
I need a apex class that illustrates bubble sort. Thanks in advance.
Hi,

I am trying to implemet bubble sort, but i am getting error. Below is my  code.
public class bubbleSort {
    List<Integer> values = new List<Integer>{10,9,8,7,6,5,4,3,2,1};
    
        integer i = 0;
        integer iterationsize = values.size();
    
                for(i=0; i < iterationsize; i++)
                {
                   boolean swapped = false;
                   for(integer j = 0;j < iterationsize; j++)
                   {
                       if( i + 1 == values.size()) break;
                       if(values.get(i) > values.get(i + 1))
                       {
                             integer swapVal = values.get(j);
                            swapped = true;
                               values.set(j, values.get(j+1));
                            values.set(j+1,swapVal);
                           }
                        System.debug('Iterations List=='JSON.serialize(values));
                   }
                   iterationSize--;
              System.debug('SWAPPED =='+swapped);
              System.debug(JSON.serialize(values));
              if(!swapped) {i=values.size();}
           }
 System.debug('Final List of values=='+ JSON.serialize(values));
}


Error: @ line 7: expecting right curly bracket, found 'for'

Thanks in advance
I need a apex class that illustrates bubble sort. Thanks in advance.