public final int partitionByPrice(int left, int  right) // see the name version of this method
	{
		Product pivotElement = products[left];
		int max = logicalSize;
		int lb = left, ub = right;
		Product temp;

		while (left < right)
		{
			while((products[left].productPrice() <= pivotElement.productPrice()) && left +1 < max) {
				left++;
			}
			while((products[right].productPrice() > pivotElement.productPrice()) && right -1 >= 0) {
				right--;
			}
			if (left < right)
			{
				temp        = products[left];
				products[left]  = products[right];
				products[right] = temp;
			}
		}
		for(left = lb; left <= right && left+1 < max; left++) {
			products[left] = products[left +1];
		}
		products[right] = pivotElement;
		return right;
	}