I need to implement the bidirectional bubble sort in my code.
In other words in
will go from left to right first carrying the largest value.
But when it reaches out
, it should reverse and go from right to left carrying the smallest value.
I am advised to to implement another out
index in addition the current one.
This is what I have so far - just 2 loops. I am guessing I have to combine them somehow?
public void bubbleSort() {
int out, in; // nElems in my case is 4, because I have 4 elements in my array
for(out=nElems-1; out>1; out--) // outer loop backward
for(in=out; in>1; in--) // inner loop backward
if(a[in] < a[in-1])
swap(in, in-1);
for(out=0; out<nElems; out++) // outer loop forward
for(in=0; in<out; in++) // inner loop forward
if(a[in] > a[in+1])
swap(in, in+1);