2
votes
var grossBrackets = new Array( '300', '400', '500', '600', '700', '800', '900', '1000' );   
function bracketSort( itemToSort ) {
        for( index = 0 ; index < grossBrackets.length ; index++ ) {
            if ( itemToSort < grossBrackets[index] ) {
                bracketData[index]++;
            } else if ( itemToSort > grossBrackets[7] ) {
                grossBrackets[7]++;
            }
        }
        return bracketData;
    }

This is my current code, and I basically want to sort the data into their proper brackets. My source code is really long, but when I input these numbers into the function:

200.18
200.27
200.36
200.45
200.54

bracketData prints 5,5,5,5,5,5,5,5 or is there a better way to do this?

Brackets: <300, <400, <500, <600, <700, <800, <900, <1000, greater than 1000

1
is bracketData a global variable, or should it be locally declared inside the function?Anurag
I left that part out, it's a global.Strawberry

1 Answers

1
votes

If you only want each item to be placed in one bracket, you need to end your loop over grossBrackets once you've found a match. You can do this with the break keyword, like so:

if ( itemToSort < grossBrackets[index] ) {
   bracketData[index]++;
   break;
} 

Incidentally, you're checking whether itemToSort is greater than grossBrackets[7] 8 times, one for each element in grossBrackets. You really only need to do this once, so it doesn't need to be in the loop.