Skip to the content.
Home Replit code Tech Talk 0 Tech Talk 1 Tech Talk 2 Tech Talk 3

Sorts

Bubble Sort

public void sort(ArrayList<Integer> array){
        for (int j = 1; j < array.size(); j++){
            int current = array.get(j);
            int i = j-1;

            while((i>-1) && (array.get(i) > current)){
                comparison_counter = comparison_counter + 2;
                swap_counter++;
                array.set(i+1, array.get(i));
                i--;
            }
            array.set(i+1, current);
        }
    }
    

## Merge Sort

``` java public void sort(ArrayList a){ divide(0, a.size()-1, a);

}

public void divide(int start, int end, ArrayList<Integer> original) {

    if(start<end && (end-start)>=1){
        int x = (end + start) / 2;
        divide(start, x, original);
        divide(x+1, end,original);
        merge(start, x, end, original);
    }
}

public void merge(int start, int mid, int end, ArrayList<Integer> unsorted){
    ArrayList<Integer> merged = new ArrayList<Integer>();
    int leftIndex = start;
    int rightIndex = mid+1;

    while(leftIndex<=mid && rightIndex<=end){
        comparison_counter++;
        if(unsorted.get(leftIndex)<=unsorted.get(rightIndex)){
            merged.add(unsorted.get(leftIndex));
            leftIndex++;
        }else{
            merged.add(unsorted.get(rightIndex));
            rightIndex++;
        }
    }

    //Either of below while loop will execute
    while(leftIndex<=mid){
        merged.add(unsorted.get(leftIndex));
        leftIndex++;
    }

    while(rightIndex<=end){
        merged.add(unsorted.get(rightIndex));
        rightIndex++;
    }

    int i = 0;
    int j = start;
    //Setting sorted array to original one
    while(i<merged.size()){
        unsorted.set(j, merged.get(i++));
        j++;
    }
}

```